SQLサーバーではログインユーザーをデータベースユーザーにマッピングする。データベース移行時にはあらかじめログインユーザーを移行先で作成するか、移行後にマップしなおす必要がある。
この時にログインユーザーがどのデータベースにマッピングしているかを確認する必要がある。画面としては下記のように取得ができるが、SQLで取得できればテキストで保存できる。
以下のようなSQLで一覧を取得できる。
CREATE TABLE #tempww ( LoginName nvarchar(max), DBname nvarchar(max), Username nvarchar(max), AliasName nvarchar(max) ) INSERT INTO #tempww EXEC master..sp_msloginmappings -- display results SELECT * FROM #tempww ORDER BY dbname, username -- cleanup DROP TABLE #tempww
データはSP経由で取得するので一時テーブルに保管している。ここでは一時テーブルを削除しているがセッションが切れれば自動で削除される。またこのSQLの実行にはsysadmin権限が必要となる。
参考
