6

Кто-нибудь знает, как заставить nolock намекнуть на все транзакции, выпущенные определенным пользователем? Я хотел бы предоставить логин для команды поддержки, чтобы запросить производственную систему, но я хочу защитить ее, заставляя nolock все, что они делают. Я использую SQL Server 2005.Как заставить подсказку nolock для входа в сервер sql

+0

Что они запрашивают в базе данных? – GateKiller 2008-09-16 11:32:44

+0

Обычно они используют SQL Server Management Studio. Однако я знаю, что некоторые из них используют SQuirreL. – VanOrman 2008-09-16 12:57:29

+0

Можете прояснить, что вы пытаетесь достичь здесь? Вы пытаетесь защитить данные в своей БД? – 2008-11-18 04:25:35

ответ

8

Это болезненный и взломанный способ сделать это, но это то, что мы делаем, где я работаю. Мы также используем классический asp, поэтому мы используем встроенные вызовы sql. мы фактически завершаем вызов sql в функции (здесь вы можете проверить конкретного пользователя) и добавьте «УСТАНОВИТЬ УРОВЕНЬ ИЗОЛЯЦИИ СТАВКИ», чтобы начать вызов.

Я считаю функционально это то же самое, что и намек на отсутствие блокировки. Извините, у меня нет чистого ответа SQL, мне было бы интересно услышать, если вы найдете хороший способ сделать это.

0

Вы можете создать ограниченного пользователя для команды поддержки, а затем либо написать хранимые процедуры или представления с помощью подсказки nolock. Затем разрешается только доступ к ним, а не прямой доступ к выбору таблицы.

0

Как только Эспо намекнул, я уверен, что нет прямого способа сделать то, что вы просите. По его словам, вы можете выполнить его, ограничив доступ пользователя только к процессам, которые имеют встроенный NOLOCK, закодированный в них.

11

Вы можете настроить SQL Management Studio своего поддерживающего персонала, чтобы установить уровень изоляции транзакций по умолчанию для READ UNCOMMITTED (Tools-> Options-> Query Execution-> SQL Server-> Advanced). Это функционально то же самое, что и NOLOCK.

Недостатки в том, что вам нужно будет сделать это для каждого члена вашей команды поддержки, и у них будет возможность изменить конфигурацию в своей SQL Management Studio.

0

К сожалению, ограничение доступа к SPs поражает цель этого. Я надеялся, что каким-то образом я могу позволить им запросить все и тем самым улучшить навыки устранения неполадок. Спасибо за помощь ребята.

1

ОК, вам необходимо уточнить, что вы пытаетесь сделать здесь.

Если вы пытаетесь уменьшить блокировку в базе данных и, возможно, предоставить своим пользователям поддержку данных, которые никогда не могут быть зафиксированы в базе данных. Позволяя им писать все, что они хотят в базе данных, тогда nolock - это путь. Вы получите дополнительный бонус, который ваш пользователь по-прежнему сможет увеличить уровень изоляции с помощью команды SET TRANSACTION ISOLATION LEVEL.

Если вы пытаетесь ограничить ущерб, который может возникнуть при работе с БД, посмотрите на реализацию безопасности, убедитесь, что им разрешен доступ только для чтения к вашим таблицам, и посмотрите, как удалить все доступ к сохраненным процессам и функциям.

I Find NOLOCK сильно недопонимается при переполнении стека.

Смежные вопросы