次の方法で共有


MSSQLSERVER_916

適用対象: SQL サーバー

詳細

属性 Value
製品名 SQL Server
イベント ID 916
イベント ソース MSSQLSERVER
コンポーネント SQLEngine
シンボル名 NOTUSER
メッセージ テキスト サーバー プリンシパル "%.*ls" は、現在のセキュリティ コンテキストではデータベース "%.*ls" にアクセスできません。

説明

ログインに、指定されたデータベースに接続するために必要な権限がありません。 SQL Server のこのインスタンスに接続できるが、データベースに特定のアクセス許可がないログインは、ゲスト ユーザーのアクセス許可を受け取ります。 これは、1 つのデータベース内のユーザーが、権限を持たない別のデータベースに接続することを防ぐためのセキュリティ措置です。 このエラー メッセージは、指定されたデータベースに対する CONNECT 権限を guest ユーザーが持っていないため、TRUSTWORTHY プロパティが設定されないときに生じる場合があります。 このエラー メッセージは、指定されたデータベースに対する CONNECT 権限を guest ユーザーが持っていないときに生じる場合があります。

msdb データベースに対する CONNECT アクセス許可が拒否または取り消されると、各データベースのポリシー ベースの管理状態オブジェクト エクスプローラー表示しようとすると、SQL Server Management Studio でこのエラーが発生する可能性があります。 オブジェクト エクスプローラーでは、現在のログインの権限を使用して、この情報を取得するために msdb データベースに対してクエリを実行します。このとき、エラーが発生します。 また、次のエラー メッセージも表示されます。

この要求のデータを取得できませんでした。 (Microsoft.SqlServer.Management.Sdk.Sfc)

ユーザーの操作

警告

このセキュリティ措置を回避する前に、各種データベースで認証されているユーザーについて明確に把握している必要があります。 次の方法を実行すると、あるデータベースへの接続権限を持つユーザーが他のデータベースに接続できるようになり、悪意のあるユーザーにデータが公開される可能性があります。 包含データベースが有効になっている場合、次の手順では、1 つのデータベースのデータベース所有者が SQL Server のインスタンス上の他のデータベースへのアクセスを許可できます。

次のいずれかの方法でデータベースに接続できます。

  • 指定されたデータベースにアクセスするための権限を特定のログインに許可します。 次の例では、Adventure-Works\Larry データベースにアクセスするための権限をログイン msdb に許可します。

    USE msdb ;
    
    GO
    
    GRANT CONNECT TO [Adventure-Works\Larry] ;
    
  • エラー メッセージで指定されたデータベースに対する CONNECT 権限を guest ユーザーに許可します。 次の例では、CONNECT データベースに対する msdb 権限を、guest ユーザーに許可します。

    USE msdb ;
    
    GO
    
    GRANT CONNECT TO guest ;
    
  • ユーザーを認証したデータベースの TRUSTWORTHY プロパティを有効にします。

    ALTER DATABASE AdventureWorks SET TRUSTWORTHY ON;