sp_change_users_login (Transact-SQL)
更新 : 2006 年 12 月 12 日
既存のデータベース ユーザーを SQL Server ログインにマップします。
メモ : |
---|
sp_change_users_login は、Windows プリンシパルから作成された SQL Server ログインや、CREATE USER WITHOUT LOGIN を使用して作成されたユーザーでは使用できません。 |
構文
sp_change_users_login [ @Action = ] 'action'
[ , [ @UserNamePattern = ] 'user' ]
[ , [ @LoginName = ] 'login' ]
[ , [ @Password = ] 'password' ]
引数
[ @Action= ] 'action'
プロシージャにより実行されるアクションの説明です。action のデータ型は varchar(10) です。action には次のいずれかの値を指定できます。値 説明 Auto_Fix
現在のデータベース内の sys.database_principals システム カタログ ビューにあるユーザー エントリを、同じ名前の SQL Server ログインにリンクします。同じ名前のログインが存在しない場合は、新しく作成されます。Auto_Fix ステートメントで結果を取得して、実際に正しくリンクが作成されたことを確認します。セキュリティが重要な状況では、Auto_Fix の使用は避けてください。
Auto_Fix を使用する際、ログインがまだ存在していない場合は user と password を指定します。ログインが既に存在している場合は user を指定する必要がありますが、password は無視されます。login には NULL を指定する必要があります。user は現在のデータベースで有効なユーザーであることが必要です。別のユーザーがマップされているログインは使用できません。
Report
現在のデータベース内で、どのログインにもリンクされていないユーザーと、対応するセキュリティ識別子 (SID) を一覧表示します。user、login、および password は NULL にするか、指定しないでください。
Update_One
現在のデータベースに存在する、指定した user を、既存の SQL Server login にリンクします。user および login を指定する必要があります。password は NULL にするか、指定しないでください。
- [ @UserNamePattern= ] 'user'
現在のデータベースに存在するユーザーの名前を指定します。user のデータ型は sysname で、既定値は NULL です。
- [ @LoginName= ] 'login'
SQL Server ログインの名前を指定します。login のデータ型は sysname で、既定値は NULL です。
[ @Password= ] 'password'
Auto_Fix を指定して作成される新しい SQL Server ログインに割り当てるパスワードを指定します。一致するログインが既に存在する場合は、ユーザーとログインがマップされ、password は無視されます。一致するログインが存在しない場合、sp_change_users_login では新しい SQL Server ログインが作成され、新しいログインのパスワードとして password が割り当てられます。password のデータ型は sysname で、NULL は指定できません。セキュリティ メモ : 複雑なパスワードを使用してください。詳細については、「強力なパスワード」を参照してください。
結果セット
列名 | データ型 | 説明 |
---|---|---|
UserName |
sysname |
データベース ユーザー名。 |
UserSID |
varbinary(85) |
ユーザーのセキュリティ識別子。 |
解説
メモ : |
---|
sp_change_users_login は、データベース ユーザーを Windows レベルのプリンシパル、証明書、または非対称キーにマップする場合は使用できません。 |
sp_change_users_login は、現在のデータベースのデータベース ユーザーを SQL Server ログインとリンクする場合に使用します。ユーザーのログインが既に変更されている場合は、sp_change_users_login を使用してユーザーを新しいログインにリンクすれば、ユーザーの権限が失われることはありません。新しい login を sa にすることはできません。また、userに dbo、guest、または INFORMATION_SCHEMA ユーザーを指定することはできません。
ユーザー定義のトランザクション内では、sp_change_users_login は実行できません。
権限
db_owner 固定データベース ロールのメンバシップが必要です。Auto_Fix オプションを指定できるのは、sysadmin 固定サーバー ロールのメンバだけです。
戻り値
0 (成功) または 1 (失敗)
例
A. 現在のユーザーとログインの対応関係を示すレポートを表示する
次の例では、どのログインにもリンクされていない現在のデータベース内のユーザーと、各ユーザーのセキュリティ識別子 (SID) を示すレポートを作成します。
EXEC sp_change_users_login 'Report';
B. データベース ユーザーを新しい SQL Server ログインにマップする
次の例では、データベース ユーザーを新しい SQL Server ログインに関連付けます。ここでは、別のログインにマップされていたデータベース ユーザー MB-Sales
を、ログイン MaryB
にマップし直します。
--Create the new login.
CREATE LOGIN MaryB WITH PASSWORD = '982734snfdHHkjj3';
GO
--Map database user MB-Sales to login MaryB.
USE AdventureWorks;
GO
EXEC sp_change_users_login 'Update_One', 'MB-Sales', 'MaryB';
GO
C. ユーザーをログインに自動的にマップし、必要に応じて新しいログインを作成する
次の例では、Auto_Fix
を使用して既存のユーザーを同じ名前のログインにマップする方法を示します。Mary
が存在しない場合は、SQL Server ログイン Mary
をパスワード B3r12-3x$098f6
を使用して作成します。
USE AdventureWorks;
GO
EXEC sp_change_users_login 'Auto_Fix', 'Mary', NULL, 'B3r12-3x$098f6';
GO
参照
関連項目
セキュリティ ストアド プロシージャ (Transact-SQL)
CREATE LOGIN (Transact-SQL)
sp_adduser (Transact-SQL)
sp_helplogins (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)
sys.database_principals (Transact-SQL)
ヘルプおよび情報
変更履歴
リリース | 履歴 |
---|---|
2006 年 12 月 12 日 |
|