SQL Server 2005: запретить доступ к sp_prepexec - PullRequest
1 голос
/ 23 октября 2008

У меня есть база данных SQL Server 2005, которая страдает от истощения блокировки из-за некоторых плохо работающих приложений, использующих курсоры через sp_prepexec. Я полагаю, что одно из приложений, в которых работает курсор, «забыло» закрыть его. Я хотел бы запретить доступ к sp_prepexec для определенных пользователей, чтобы предотвратить возникновение блокировки блокировки в производственной базе данных.

Когда я пытаюсь использовать следующий синтаксис:

использовать мастер запретить выполнение в sp_prepexec приложению User

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

Но проблема в том, что applicationUser не является пользователем в базе данных master. Итак, я получаю следующую ошибку: Не удается найти пользователя 'applicationUser', поскольку он не существует или у вас нет разрешения.

Если я добавлю этого пользователя к мастеру, это, похоже, не помешает applicationUser запускать sp_prepexec в рабочей базе данных.

Может кто-нибудь указать мне правильное направление с этим?

1 Ответ

1 голос
/ 23 октября 2008

Не могли бы вы отказать в разрешении роли, а не конкретному пользователю?

USE master
GO
DENY EXECUTE ON production.sp_prepexec TO public
GO
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...