[SQL]PRB: 対応するログインの存在しないユーザー

文書翻訳 文書翻訳
文書番号: 274188 - 対象製品
この記事は、以前は次の ID で公開されていました: JP274188
BUG #: 58200 (SQLBUG_70)
BUG #: 235230 (SHILOH)
すべて展開する | すべて折りたたむ

目次

概要

データベースを他のサーバーへ復元した場合、ユーザーに対応するログインが存在しないという問題に遭遇することがあります。SQL Server Books Online トピック「対応するログインの存在しないユーザーに関するトラブルシューティング」は、この問題のトラブルシューティングの完全な手順を述べていません。

この資料では、対応するログインの存在しないユーザーに関するトラブルシューティングをどのように行うのかを解説しています。

詳細

ログインとユーザーという用語は、しばしば交換可能なものとして使われていますが、それらはまったく別のものです。ログインはユーザー認証のために使用され、データベース ユーザー アカウントはデータベースへのアクセス権限の確認のために使用されます。ログインは、セキュリティ識別子 (SID) によってユーザーに関連付けられています。ログインは、SQL Server へのアクセスのために要求されます。あるログインが有効であることを確認するためのプロセスは、「認証 (authentication)」と呼ばれます。このログインは、SQL Server データベース ユーザーに関連付けられていなければなりません。ユーザー アカウントはデータベース内で実行できることを制御するために使用します。もし、データベース内に、特定のログインのためのユーザー アカウントが存在しなかったなら、そのログインを使用しているユーザーは、SQL Server へ接続することができたとしても、データベースにアクセスすることはできません。この状況の唯一の例外は、データベースが "guest" ユーザー アカウントを持っている場合です。ユーザー アカウントに関連付けられていないログインは、guest ユーザーにマップされます。逆の言い方をすれば、データベース ユーザーは存在しているが関連付けられたログインが存在しない場合、そのユーザーは SQL Server にログインすることはできません。

データベースが異なるサーバーへ復元された場合には、そのデータベースはユーザーと権限を含んでいますが、対応するログインやその同じユーザーに関連付けられたログインは存在しません。これは、対応するログインの存在しないユーザー (orphaned users) として知られています。

対応するログインの存在しないユーザーに関するトラブルシューティング

データベースを他のサーバーへ復元した場合、ユーザーに対応するログインが存在しないという問題に遭遇するかもしれません。次のシナリオは、この問題を説明し、それを解決する方法を示しています。
  1. master データベースにログインを追加します。そして、デフォルトデータベースとして Northwind を指定します。
         Use master
         go
         sp_addlogin 'test', 'password', 'Northwind'
    
  2. 作成したログインにアクセス権を与えます。
         Use Northwind 
         go
         sp_grantdbaccess 'test'
    
  3. データベースをバックアップします。
         BACKUP DATABASE Northwind
         TO DISK = 'C:\MSSQL\BACKUP\Northwind.bak'
    
  4. 別の SQL Server へデータベースを復元します。
         RESTORE DATABASE Northwind
         FROM DISK = 'C:\MSSQL\BACKUP\Northwind.bak'
    
    復元されたデータベースは、対応するログインのない test と名づけられたユーザーを含んでいます。
  5. 次のコードを実行して、対応するログインのないユーザーを確認します。
         Use Northwind
         go
         sp_change_users_login 'report'
    
    出力は、Northwind データベースの sysusers システムテーブルと master データベースの sysxlogins システムテーブル内のエントリが一致していないすべてのログインを列挙します。

対応するログインの存在しないユーザーに関する問題の解決手順

  1. 上記手順で確認した対応するログインの存在しないユーザーに関して、次のコマンドを実行します。
         Use Northwind
         go
         sp_change_users_login 'update_one', 'test', 'test'
    
    これは、サーバー ログイン "test" を Northwind データベース ユーザー "test" に再度関連付けます。sp_change_users_login ストアド プロシージャを "auto_fix" パラメータとともに実行することで、対応するログインの存在しないユーザーすべてを更新することもできます。しかし、これは推奨されません。なぜなら、SQL Server は名前によってログインとユーザーを一致させようとするからです。ほとんどの場合には、これは期待したとおりの結果になります。しかし、誤ったログインがユーザーに関連付けられた場合、ユーザーは不正な権限を持ってしまいます。
  2. 上記手順のコードを実行した後、ユーザーはそのデータベースにアクセスできるようになります。そのユーザは sp_password ストアド プロシージャでパスワードを変更することが可能です。
         Use master 
         go
         sp_password NULL, 'ok', 'test'
    
    このストアド プロシージャは Microsoft Windows NT セキュリティ アカウントには使用できません。Windows NT ネットワーク アカウントを通して SQL Server へ接続しているユーザーは、Windows NT によって認証されています。そのため、それらのパスワードは Windows NT でのみ変更することができます。

    sysadmin ロールのメンバのみが他のユーザーのログインのパスワードを変更することができます。

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 274188 (最終更新日 2001-03-07) をもとに作成したものです。

プロパティ

文書番号: 274188 - 最終更新日: 2004年3月2日 - リビジョン: 3.1
この資料は以下の製品について記述したものです。
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
キーワード:?
kbcodesnippet kbpending kbprb KB274188
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com