SQL Server ユーザーマッピング エラー 15023 でデータベース接続不能? 5つの解決策で迅速復旧
原因:
このエラーの主な原因は以下の2つです。
- SID の不一致: 復元元サーバーと復元先サーバーのログイン SID が異なる場合。
- ログインの欠如: 復元先サーバーに復元元サーバーと同じ名前のログインが存在しない場合。
解決策:
このエラーを解決するには、以下のいずれかの方法を実行する必要があります。
方法 1: ログインを再作成する
- マスターデータベースに接続します。
- 以下の T-SQL コマンドを実行して、復元元サーバーのログイン SID を持つログインを再作成します。
CREATE LOGIN [ログイン名] WITH SID = [SID]
方法 2: ユーザーを再マッピングする
- 以下の T-SQL コマンドを実行して、ユーザーをログインに再マッピングします。
CREATE USER [ユーザー名] FOR LOGIN [ログイン名]
方法 3: ログインとユーザーを同時に作成する
- 以下の T-SQL コマンドを実行して、ログインとユーザーを同時に作成します。
CREATE USER [ユーザー名] WITH LOGIN = [ログイン名]
- 上記の手順を実行する前に、必ずバックアップを取っておいてください。
- 複雑なデータベースの復元や移行を行う場合は、専門家に相談することをお勧めします。
-- マスターデータベースに接続します
USE master;
-- 復元元サーバーのログイン SID を持つログインを再作成します
CREATE LOGIN [ログイン名] WITH PASSWORD = '<パスワード>', SID = 0x[SID]';
-- 現在のデータベースに接続します
USE [データベース名];
-- ユーザーをログインに再マッピングします
CREATE USER [ユーザー名] FOR LOGIN [ログイン名];
-- 現在のデータベースに接続します
USE [データベース名];
-- ログインとユーザーを同時に作成します
CREATE USER [ユーザー名] WITH LOGIN = [ログイン名], PASSWORD = '<パスワード>';
注:
<パスワード>
と<SID>
を実際の値に置き換えてください。- SID は、SQL Server Management Studio または
sp_user_sid
システム ストア プロシージャを使用して取得できます。
例:
-- マスターデータベースに接続します
USE master;
-- 復元元サーバーのログイン SID を持つログインを再作成します
CREATE LOGIN test_login WITH PASSWORD = 'P@ssw0rd!', SID = 0x0100000002000000;
-- 現在のデータベースに接続します
USE my_database;
-- ユーザーをログインに再マッピングします
CREATE USER test_user FOR LOGIN test_login;
-- ログインとユーザーを同時に作成します
CREATE USER my_new_user WITH LOGIN = my_new_login, PASSWORD = 'MyN3wP@ssw0rd!';
sp_change_users_login
プロシージャを使用して、ログインとユーザーのマッピングを手動で変更できます。この方法は、高度なユーザー向けであり、データベースの構造を十分に理解している場合にのみ使用することをお勧めします。
構文:
EXEC sp_change_users_login @login_name = N'[ログイン名]',
@user_name = N'[ユーザー名]',
@action = N'[アクション]';
アクションの値:
- Create: ログインとユーザーを新規作成します。
- Map: 既存のユーザーをログインにマッピングします。
- Drop: ログインとユーザーを削除します。
EXEC sp_change_users_login @login_name = N'test_login',
@user_name = N'test_user',
@action = N'Map';
SQL Server Management Studio を使用する
SQL Server Management Studio (SSMS) を使用して、ログインとユーザーのマッピングをグラフィカルに編集することもできます。
手順:
- SSMS で、接続しているサーバーインスタンスとデータベースを選択します。
- セキュリティ > ログイン を展開します。
- 影響を受けるログインを右クリックし、 プロパティ を選択します。
- ユーザー マッピング ページで、 ユーザー ドロップダウンリストから目的のユーザーを選択します。
- OK をクリックして変更を保存します。
復元をやり直す
場合によっては、データベースの復元をやり直すことで問題が解決する場合があります。復元を実行する前に、必ず完全なバックアップを取っておいてください。
sql sql-server