次の方法で共有


sp_change_users_login (Transact-SQL)

更新 : 2006 年 12 月 12 日

既存のデータベース ユーザーを SQL Server ログインにマップします。

ms174378.note(ja-jp,SQL.90).gifメモ :
sp_change_users_login は、Windows プリンシパルから作成された SQL Server ログインや、CREATE USER WITHOUT LOGIN を使用して作成されたユーザーでは使用できません。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

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 を使用する際、ログインがまだ存在していない場合は userpassword を指定します。ログインが既に存在している場合は user を指定する必要がありますが、password は無視されます。login には NULL を指定する必要があります。user は現在のデータベースで有効なユーザーであることが必要です。別のユーザーがマップされているログインは使用できません。

    Report

    現在のデータベース内で、どのログインにもリンクされていないユーザーと、対応するセキュリティ識別子 (SID) を一覧表示します。userlogin、および 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 は指定できません。

    ms174378.security(ja-jp,SQL.90).gifセキュリティ メモ :
    複雑なパスワードを使用してください。詳細については、「強力なパスワード」を参照してください。

結果セット

列名 データ型 説明

UserName

sysname

データベース ユーザー名。

UserSID

varbinary(85)

ユーザーのセキュリティ識別子。

解説

ms174378.note(ja-jp,SQL.90).gifメモ :
sp_change_users_login は、データベース ユーザーを Windows レベルのプリンシパル、証明書、または非対称キーにマップする場合は使用できません。

sp_change_users_login は、現在のデータベースのデータベース ユーザーを SQL Server ログインとリンクする場合に使用します。ユーザーのログインが既に変更されている場合は、sp_change_users_login を使用してユーザーを新しいログインにリンクすれば、ユーザーの権限が失われることはありません。新しい loginsa にすることはできません。また、userdboguest、または 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)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 12 月 12 日

変更内容 :
  • sp_change_users_login の使用に関する注意事項に説明を追加しました。