4.3 SQL ステートメントでデータベース ユーザーの作成
Security ID)を利用して行われていることが原因で発生しています。SID は、database_principals ビューで参照する ことができます(ログン ゕカウントに割り当てられた SID は、server_principals ビューで参照することができま す)。
SQL Server 認証用のログン ゕカウントに割り当てられる SID は、マシンが異なると、違うものが割り当てられる ので、開発機と本番環境(移行元と移行先)では、ログン ゕカウントの SID が異なることになります。これによっ て、不明なデータベース ユーザーが発生し、このままでは、該当データベース ユーザーが利用できない状態となります
(データベースへの接続が行えません)。
■ sp_change_users_login
不明なデータベース ユーザーが存在するかどうかを確認するには、次のように sp_change_users_login システム ストゕド プロシージャを利用します。
USE データベース名
EXEC sp_change_users_login 'Report'
不明なデータベース ユーザーが存在した場合に、それを解消するには、次のように sp_change_users_login システ ム ストゕド プロシージャを実行します。
USE データベース名
EXEC sp_change_users_login 'Update_One', '不明なデータベースユーザー名', '新しいログインアカウント名' Update_One を指定して sp_change_users_login を実行すると、不明なデータベース ユーザーの古い SID(移行元 の SID)を新しいログン ゕカウントの SID(移行先の SID)へ更新し、再マッピングをしてくれるようになります。
これで不明なデータベース ユーザーが解消されて、移行元と同じようにデータベース ユーザーを利用できるようになり ます。
■ 同じパスワード/SID のログイン アカウントの作成: sp_help_revlogin
sp_change_users_login によるログン ゕカウントの再マッピングは、データベース ユーザーの数が多い場合には、
大変な作業です。これを解決するには、同じパスワードで、かつ同じ SID のログン ゕカウントを作成することです。
これを行うには、マクロソフトのサポート技術情報 (KB: Knowledge Base) の文書番号 918992 で提供されている
「sp_help_revlogin」というストゕド プロシージャを使用します。
KB918992: SQL Server 2005 のインスタンス間でログインおよびパスワードを転送する方法 http://support.microsoft.com/kb/918992/ja
この文書で提供されるスクリプトを丸ごとコピーし、Management Studio のクエリ エデゖタへ貼り付けて実行する と、sp_help_revlogin ストゕド プロシージャを作成することができます。作成後は、以下のように実行すれば、同一 のパスワード/SID のログン ゕカウントを作成するためのスクリプト (CREATE LOGIN ステートメント) が生成さ れます。
EXEC master..sp_help_revlogin
ST S TE E P P 5. 5 . オブ オ ブジ ジェ ェク クト ト権 権限 限と と デー デ ータ タベ ベー ース ス ロー ロ ール ル
この STEP では、オブジェクト権限とデータベース ロール、スキーマについて説 明します。
この STEP では、次のことを学習します。
オブジェクト権限
固定データベース ロール
オブジェクト権限の状態(GRANT / DENY / REVOKE)
ユーザー定義データベース ロール
データベース レベルの権限
スキーマ
ビューを利用したセキュリテゖ強化
スキーマが異なる場合のオブジェクト権限
5.1 オブジェクト権限