MSSQLSERVER_916
Область применения: SQL Server
Сведения
Атрибут | Значение |
---|---|
Название продукта | SQL Server |
ИД события | 916 |
Источник событий | MSSQLSERVER |
Компонент | SQLEngine |
Символическое имя | NOTUSER |
Текст сообщения | Субъект-сервер "%.*ls" не может получить доступ к базе данных "%.*ls" в текущем контексте безопасности. |
Описание
У имени входа отсутствуют необходимые разрешения для соединения с именованной базой данных. Имена входа, которые могут подключаться к этому экземпляру SQL Server, но у которых нет определенных разрешений в базе данных, получают разрешения гостевого пользователя. Это одна из мер безопасности, которая не позволяет пользователям одной базы данных подключаться к другим базам данных, в которых они не имеют прав доступа. Это сообщение об ошибке отображается, если у пользователя guest отсутствует разрешение CONNECT для подключения к именованной базе данных и свойство доверительных отношений не включено. Это сообщение об ошибке отображается, если у пользователя guest отсутствует разрешение CONNECT для соединения с именованной базой данных.
Если разрешение CONNECT для базы данных msdb запрещено или отозвано, СРЕДА SQL Server Management Studio может получить эту ошибку, когда обозреватель объектов пытается показать состояние управления на основе политик каждой базы данных. Обозреватель объектов использует разрешения текущего имени для входа, чтобы получить эту информацию из базы данных msdb, что и вызывает указанную ошибку. Также отображается следующее сообщение об ошибке:
Ошибка при получении данных по этому запросу. (Microsoft.SqlServer.Management.Sdk.Sfc)
Действие пользователя
Предупреждение
Прежде чем обойти эту меру безопасности, необходимо достичь четкого понимания того, какие пользователи проходят проверку в различных базах данных. Следующие методы могут позволить пользователям, имеющим разрешения в одной базе данных, подключаться к другим базам данных, в результате чего доступ к данным может получить злонамеренный пользователь. Если включены содержащиеся базы данных, следующие шаги позволяют владельцам баз данных в одной базе данных предоставлять доступ к другой базе данных в экземпляре SQL Server.
Можно подключиться к базе данных одним из следующих способов.
Предоставить имени входа специальный доступ к указанной базе данных. В следующем примере предоставляется разрешение для имени входа для доступа
Adventure-Works\Larry
к базе данныхmsdb
.USE msdb ; GO GRANT CONNECT TO [Adventure-Works\Larry] ;
Предоставить для пользователя guest разрешение CONNECT для базы данных, указанной в сообщении об ошибке. В следующем примере пользователю
CONNECT
предоставляется разрешениеmsdb
для базы данныхguest
.USE msdb ; GO GRANT CONNECT TO guest ;
Включите свойство TRUSTWORTHY в базе данных, применительно к которой прошел проверку пользователь.
ALTER DATABASE AdventureWorks SET TRUSTWORTHY ON;