Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описываются различные проблемы, которые могут возникать при отключении гостевого пользователя в базе данных msdb в SQL Server.
Исходная версия продукта: SQL Server
Исходный номер базы знаний: 2539091
Симптомы, когда гостевой пользователь отключен в базе данных msdb
Чтобы некоторые функции Microsoft SQL Server работали, гостевой пользователь должен быть включен в базе данных msdb. В этой статье описываются некоторые проблемы, которые могут возникнуть при отключении гостевого пользователя в базе данных msdb. В этой статье также содержатся сведения о том, как устранить эти проблемы.
Если гостевой пользователь отключен в базе данных msdb, может появиться ошибка MSSQLSERVER_916 при развертывании пользователем узла баз данных в Management Studio или при попытке подключения к SQL Server серверное приложение. При возникновении этой проблемы может возникнуть один или несколько следующих симптомов в вашей среде.
Примечание.
Текст ошибки может немного отличаться в зависимости от сценария. Однако основная причина в основном одинакова. Это приводит к нехватке привилегий в базе данных msdb. Эти симптомы возникают, когда обозреватель объектов пытается показать состояние управления на основе политик каждой базы данных. обозреватель объектов использует разрешения текущего входа в систему для запроса базы данных msdb для этой информации, что приводит к ошибке.
Симптом 1
В средах SQL Server 2012 и более поздних версий, когда пользователь, не являющийся членом предопределенной роли сервера Sysadmin в SQL Server, а не предоставлял соответствующие разрешения в msdb, пытается развернуть узел "Базы данных" или любой из папок под этим узлом, они получают сообщение об ошибке, похожее на следующее:
Не удается отобразить запрошенный диалог. ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ: не удается отобразить запрошенный диалог. (SqlMgmt) При выполнении инструкции или пакета Transact-SQL произошло исключение. (Microsoft.SqlServer.ConnectionInfo)
Имя пользователя> субъекта-сервера <не может получить доступ к базе данных msdb в текущем контексте безопасности. (Microsoft SQL Server, ошибка: 916)
Симптом 2
В средах SQL Server 2008 и SQL Server 2008 R2, когда пользователь, не являющийся членом предопределенной роли сервера Sysadmin в SQL Server, а не предоставил соответствующие разрешения в msdb, пытается развернуть узел базы данных или любую из папок под этим узлом, они получают сообщение об ошибке, похожее на следующее:
Ошибка при получении данных по этому запросу. (Microsoft.SqlServer.Manager.Sdk.Sfc)
Дополнительные сведения
Возникло исключение при выполнении пакета или инструкции Transact-SQL.
(Microsoft.SqlServer.ConnectionInfo)
Имя> сервера субъекта-сервера <не может получить доступ к базе данных msdb в текущем контексте безопасности. (Microsoft SQL Server, ошибка: 916)
Примечание.
Развертывание узла базы данных — это всего лишь одна из действий, требующих разрешения на подключение гостевой учетной записи к базе данных msdb. Аналогичная ошибка может возникать с любым действием, требующим по крайней мере минимального доступа к базе данных msdb.
Как определить проблему
Чтобы определить, правильно ли настроен гостевой пользователь в базе данных msdb, выполните следующий запрос в качестве члена предопределенных ролей сервера sysadmin:
USE msdb;
SELECT prins.name AS grantee_name, perms.*
FROM sys.database_permissions AS perms
JOIN sys.database_principals AS prins
ON perms.grantee_principal_id = prins.principal_id
WHERE prins.name = 'guest' AND perms.permission_name = 'CONNECT';
GO
Если вы получите результирующий набор, похожий на приведенный ниже, у гостевого пользователя есть необходимые разрешения.
| grantee_name | class | class_desc | major_id | minor_id | grantee_principal_id | grantor_principal_id | type | permission_name | state | state_desc |
|---|---|---|---|---|---|---|---|---|---|---|
| guest | 0 | DATABASE | 0 | 0 | 2 | 1 | CO | ПОДКЛЮЧЕНИЕ | G | GRANT |
Если вы получаете пустой результирующий набор или state_desc отображается в результирующем наборе, упоминаемом здесь, гостевой пользователь отключен в базе данных msdb. При подключении к базе данных может возникать ошибка 916.
Способы устранения проблемы
Чтобы устранить эту проблему, выполните следующий запрос в SQL Server Management Studio в качестве члена предопределенных ролей сервера sysadmin:
USE msdb;
GRANT connect TO guest;
GO