У меня есть база данных SQL Server 2005, которая страдает от истощения блокировки из-за некоторых плохо работающих приложений, использующих курсоры через sp_prepexec. Я полагаю, что одно из приложений, в которых работает курсор, «забыло» закрыть его. Я хотел бы запретить доступ к sp_prepexec для определенных пользователей, чтобы предотвратить возникновение блокировки блокировки в производственной базе данных.
Когда я пытаюсь использовать следующий синтаксис:
использовать мастер
запретить выполнение в sp_prepexec приложению User
Мне нужно использовать мастер, потому что когда я этого не делаю: разрешения на представления каталога в области сервера, системные хранимые процедуры или расширенные хранимые процедуры могут предоставляться только в том случае, если текущая база данных является главной.
Но проблема в том, что applicationUser не является пользователем в базе данных master. Итак, я получаю следующую ошибку:
Не удается найти пользователя 'applicationUser', поскольку он не существует или у вас нет разрешения.
Если я добавлю этого пользователя к мастеру, это, похоже, не помешает applicationUser запускать sp_prepexec в рабочей базе данных.
Может кто-нибудь указать мне правильное направление с этим?