データベースの復元後にデータベース上のユーザー ログインと権限が無効になる

文書翻訳 文書翻訳
文書番号: 168001 - 対象製品
この記事は、以前は次の ID で公開されていました: JP168001
すべて展開する | すべて折りたたむ

現象

古いバージョンの master データベースの再構築または再読み込みを実行した後、SQL Server ユーザー データベースのダンプを他の SQL Server (ホット バックアップ サーバーなど) や同じ SQL Server に復元すると、そのデータベースのユーザー ログインと権限が無効になる場合があります。

この問題により、次のような現象が発生することがあります。
  • 6.x サーバーにログインしているときに、次のエラー メッセージが表示される場合があります。
    メッセージ 4002, レベル 14, 状態 1, サーバー Microsoft SQL Server, 行 0
    ログインに失敗しました。
    DB-Library: ログインが正しくありません。
  • 7.0 サーバーにログインしているときに、次のエラー メッセージが表示される場合があります。
    メッセージ 18456、レベル 14、状態 1
    ユーザー '%ls' はログインできませんでした。
  • ユーザーがデータベース内のオブジェクトにアクセスしようとすると、次のエラー メッセージが表示される場合があります。
    メッセージ 229、レベル 14、状態 1
    %s 権限は、オブジェクト %.*s、データベース %.*s、所有者 %.*s にありません。
  • ログインを作成して復元したデータベースに対するアクセス権を与えるか、そのデータベースにユーザーを追加しようとすると、次のエラー メッセージが表示される場合があります。
    Microsoft SQL-DMO (ODBC SQLState: 42000)
    エラー 15023: ユーザーまたはロール '%s' は現在のデータベースに既に存在します。
  • ユーザーに、以前は権限がなかったオブジェクトに対する権限が与えられる場合があります。

原因

ユーザー ログイン情報は、master データベースの syslogins テーブルに格納されています。サーバーを変更したり、古いバージョンの master データベースを再構築または復元してこの情報を変更したりすると、この情報がユーザー データベースのダンプを作成したときの状態と一致しなくなる場合があります。ユーザー ログインが存在しない場合、そのユーザーがサーバーにログインしようとしたときに、"ログインに失敗しました" というメッセージが表示されます。ユーザー ログインが存在しても、master データベースの syslogins テーブルとユーザー データベースの sysusers テーブルとの間で SUID (6.x) または SID (7.0) の値が異なっている場合、そのユーザーはユーザー データベースで要求されているものとは異なる権限を与えられている可能性があります。

: Microsoft SQL Server 2005 を使用している場合、syslogins テーブルと sysusers テーブルは互換性ビューとして実装されています。これらのビューは、sys.syslogins と sys.sysusers です。互換性ビューの詳細については、SQL Server 2005 Books Online の「互換性ビュー (Transact-SQL)」を参照してください。

回避策

この問題を回避するには、以下のいずれかを実行します。
  • ログイン、ユーザー、および権限を追加するスクリプトを入手できる場合は、スクリプトでそれらを削除して再作成します。スクリプトを使用してサーバー間でログインを転送する方法については、以下の「サポート技術情報」 (Microsoft Knowledge Base) の資料を参照してください。
    246133 [INF] SQL Server 7.0 または SQL Server 2000 サーバー間でログインおよびパスワードを転送する
    240872 [HOWTO] SQL Server を実行しているサーバー間でデータベースを移動するときに、権限の問題を解決する方法
  • sp_change_users_login ストアド プロシージャを使用して、syslogins、sysusers、および sysalternates テーブル間のリレーションシップを再度関連付けることができます。ただし、このプロシージャは最適なリンクを判断して作成するため、ユーザーに必要以上のアクセス権を与える場合があります。まず Report オプションを指定してこのプロシージャを実行すると、変更されるユーザーの一覧が生成されます。プロシージャの実行後、変更されたユーザーに適切な権限が割り当てられていることを確認する必要があります。また、バックアップの復元先データベースに異なる順番で作成されたログインとユーザーが原因で発生した権限の問題を sp_change_users_login プロシージャを使用して解決できないことに注意する必要があります。
  • ユーザー データベースを読み込む前に、そのユーザー データベースのダンプを作成した時点の master データベースのダンプをサーバーに復元します。これにより、ユーザー データベースのすべてのユーザー情報が master データベースの syslogins テーブルと正確に一致します。

    警告 : master データベースにはサーバー全体の情報が含まれているため、サーバー上のすべてのデータベースがその影響を受けます。master データベースを復元すると、ユーザー ID やデータベースが失われたり、誤った権限を与えられる場合があります。バックアップの作成後に master データベースに対して加えられた変更はすべて失われます。この方法は、master データベースのバックアップに、問題となっているユーザー データベースとサーバー上の他のすべてのデータベースの正確な情報が含まれていることがわかっている場合にのみ使用してください。
  • Transfer Manager (6.x) または DTS (7.0) を使用してログインをコピーします。この方法ではパスワードが転送されないことに注意してください。
  • 主要なサポート プロバイダに問い合わせてください。

プロパティ

文書番号: 168001 - 最終更新日: 2006年8月8日 - リビジョン: 5.3
この資料は以下の製品について記述したものです。
  • Microsoft SQL Server 6.0 Standard Edition
  • Microsoft SQL Server 6.5 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Workgroup Edition
キーワード:?
kbprb kbusage KB168001
"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