none
SQL Server 2008 データベースの復元後にデータベース上のユーザーログインと権限が無効になった。 RRS feed

  • 質問

  • いつもお世話になっております。

    SQL Server2008 Expressバージョンなんですが、2号機のデータベースに1号機のバックアップファイルを復元後、ユーザーのログインが無効になりました。

    調べたところ、データベースの復元後にデータベース上のユーザー ログインと権限が無効になる が見つかりました。その対策通りにストアド「sp_change_users_login」使ってユーザーの権限を復元しました。

    この問題がSQLServer2000,2005にもありますが、ほんとにSQL Server 2008バージョンにも同じ問題があるんでしょうか。ほかの簡単の対策がないんでしょうか。

    2010年12月9日 1:56

回答

  • 簡単な方法があるかどうかまではわかりませんが、基本的な考え方はSQL Server 2008でも同じです。ユーザー毎にSIDを持っており、ユーザー名が同じでもSIDが異なれば違うユーザーとして扱われます。通常、サーバーが変われば同じユーザー名でもSIDが異なりますから、そこでログインユーザーとデーターベースユーザーとの再マップが必要になります。なお、SQL Server 2008ではsp_change_users_loginの代わりにAlter Userの使用が推薦されています。

    ALTER USER (Transact-SQL)
    http://msdn.microsoft.com/ja-jp/library/ms176060.aspx

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク q_博_p 2010年12月9日 6:04
    2010年12月9日 2:47
  • sp_change_users_loginは以下に書かれている通り、将来は削除される予定があるからです。SQL server 2008においては、sp_change_users_loginは互換性のために残されていると考えるのが妥当だと思います。

    sp_change_users_login (Transact-SQL)
    http://msdn.microsoft.com/ja-jp/library/ms174378.aspx

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク q_博_p 2010年12月9日 6:04
    2010年12月9日 5:45

すべての返信

  • 簡単な方法があるかどうかまではわかりませんが、基本的な考え方はSQL Server 2008でも同じです。ユーザー毎にSIDを持っており、ユーザー名が同じでもSIDが異なれば違うユーザーとして扱われます。通常、サーバーが変われば同じユーザー名でもSIDが異なりますから、そこでログインユーザーとデーターベースユーザーとの再マップが必要になります。なお、SQL Server 2008ではsp_change_users_loginの代わりにAlter Userの使用が推薦されています。

    ALTER USER (Transact-SQL)
    http://msdn.microsoft.com/ja-jp/library/ms176060.aspx

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク q_博_p 2010年12月9日 6:04
    2010年12月9日 2:47
  • trapemiya 様

    ご返事ありがとうございました。大変勉強になりました。

    SQL Server 2008の場合、sp_change_users_loginよりAlter Userの使用が推薦されている理由がありますか。

    よろしくお願いします

    2010年12月9日 5:27
  • sp_change_users_loginは以下に書かれている通り、将来は削除される予定があるからです。SQL server 2008においては、sp_change_users_loginは互換性のために残されていると考えるのが妥当だと思います。

    sp_change_users_login (Transact-SQL)
    http://msdn.microsoft.com/ja-jp/library/ms174378.aspx

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク q_博_p 2010年12月9日 6:04
    2010年12月9日 5:45
  • trapemiya 様

    細かい所まで説明していただいてありがとうございます。

    よく勉強になりました。

    2010年12月9日 6:09