sp_change_users_login (Transact-SQL)
適用対象:SQL Server
既存のデータベース ユーザーを SQL Server ログインにマップします。
重要
この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 代わりに ALTER U Standard Edition R を使用してください。
構文
sp_change_users_login [ @Action = ] 'action'
[ , [ @UserNamePattern = ] 'user' ]
[ , [ @LoginName = ] 'login' ]
[ , [ @Password = ] 'password' ]
[;]
引数
[ @Action= ] 'action'
プロシージャにより実行されるアクションの説明です。 action is varchar(10). アクション には、次のいずれかの値を指定できます。
Value | 説明 |
---|---|
Auto_Fix | 現在のデータベースの sys.database_principals システム カタログ ビューのユーザー エントリを、同じ名前の SQL Server ログインにリンクします。 同じ名前のログインが存在しない場合は、新しく作成されます。 Auto_Fix ステートメントの結果を調べて、正しいリンクが実際に作成されていることを確認します。 セキュリティ上重要な状況では、Auto_Fixを使用しないでください。 Auto_Fixを使用する場合は、ログインがまだ存在しない場合はユーザーとパスワードを指定する必要があります。それ以外の場合はユーザーを指定する必要がありますが、パスワードは無視されます。 ログイン は NULL である必要があります。 ユーザー は、現在のデータベース内の有効なユーザーである必要があります。 ログインに別のユーザーをマップすることはできません。 |
Report | 現在のデータベース内で、どのログインにもリンクされていないユーザーと、対応するセキュリティ識別子 (SID) を一覧表示します。 ユーザー、 ログイン、および パスワード は NULL であるか、指定されていない必要があります。 レポート オプションをシステム テーブルを使用したクエリに置き換えるには、sys.server_prinicpalsのエントリをsys.database_principalsのエントリと比較します。 |
Update_One | 現在のデータベース内の指定された ユーザー を既存の SQL Server ログインにリンクします。 ユーザー と ログイン を指定する必要があります。 パスワード は NULL であるか、指定されていない必要があります。 |
[ @UserNamePattern= ] 'user'
現在のデータベース内のユーザーの名前を指定します。 user は sysname で、既定値は NULL です。
[ @LoginName= ] 'login'
SQL Server ログインの名前です。 login のデータ型は sysname で、既定値は NULL です。
[ @Password= ] 'password'
Auto_Fixを指定して作成された新しい SQL Server ログインに割り当てられたパスワードです。 一致するログインが既に存在する場合、ユーザーとログインはマップされ、 パスワード は無視されます。 一致するログインが存在しない場合、sp_change_users_loginは新しい SQL Server ログインを作成し、新しいログインのパスワードとしてパスワードを割り当てます。 パスワード は sysname であり、NULL にすることはできません。
重要
常に強力なパスワードを 使用してください。
リターン コードの値
0 (成功) または 1 (失敗)
結果セット
列名 | データ型 | 説明 |
---|---|---|
UserName | sysname | データベース ユーザー名。 |
UserSID | varbinary(85) | ユーザーのセキュリティ識別子。 |
解説
sp_change_users_loginを使用して、現在のデータベース内のデータベース ユーザーを SQL Server ログインにリンクします。 ユーザーのログインが既に変更されている場合は、sp_change_users_login を使用してユーザーを新しいログインにリンクすれば、ユーザーの権限が失われることはありません。 新しいログインを sa にすることはできません。また、ユーザーを dbo、guest、または INFORMATION_SCHEMA ユーザーにすることはできません。
sp_change_users_login は、データベース ユーザーを Windows レベルのプリンシパル、証明書、または非対称キーにマップする場合は使用できません。
sp_change_users_loginは、Windows プリンシパルから作成された SQL Server ログインや、CREATE U Standard Edition R WITHOUT LOGIN を使用して作成されたユーザーでは使用できません。
ユーザー定義のトランザクション内では、sp_change_users_login は実行できません。
アクセス許可
db_owner 固定データベース ロール内でメンバーシップが必要です。 Auto_Fix オプションを指定できるのは、sysadmin 固定サーバー ロールのメンバーだけです。
例
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 AdventureWorks2022;
GO
EXEC sp_change_users_login 'Update_One', 'MB-Sales', 'MaryB';
GO
C: ユーザーをログインに自動的にマッピングし、必要に応じて新しいログインを作成する
次の例は、既存のユーザーをAuto_Fix
同じ名前のログインにマップしたり、ログインが存在しない場合にパスワードB3r12-3x$098f6
を持つ SQL Server ログインMary
Mary
を作成したりする方法を示しています。
USE AdventureWorks2022;
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)
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示