Не следует отключать гостевого пользователя в базе данных msdb в SQL Server
В этой статье описаны различные проблемы, которые могут возникнуть при отключении гостевого пользователя в базе данных 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)
Субъект сервера <Servername> не может получить доступ к базе данных 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 |
---|---|---|---|---|---|---|---|---|---|---|
Гостевой | 0 | БАЗЫ ДАННЫХ | 0 | 0 | 2 | 1 | CO | CONNECT | G | ПРЕДОСТАВИТЬ |
Если вы получаете пустой результирующий набор или если state_desc
в результирующем наборе, упоминаемом здесь, отображается значение DENY, гостевой пользователь отключается в базе данных msdb. При подключении к базе данных может появиться сообщение об ошибке 916.
Устранение проблемы
Чтобы устранить эту проблему, выполните следующий запрос в SQL Server Management Studio в качестве члена предопределенных ролей сервера sysadmin:
USE msdb;
GRANT connect TO guest;
GO
Ссылки
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделе:Отправить и просмотреть отзыв по