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;