sp_addlogin (Transact-SQL)
新しい SQL Server ログインを作成し、ユーザーが SQL Server 認証を使用して SQL Server のインスタンスに接続できるようにします。
重要 : |
---|
この機能は、将来のバージョンの Microsoft SQL Server では削除される予定です。新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。代わりに、CREATE LOGIN を使用してください。 |
セキュリティ メモ : |
---|
可能な場合は、Windows 認証を使用します。 |
構文
sp_addlogin [ @loginame = ] 'login'
[ , [ @passwd = ] 'password' ]
[ , [ @defdb = ] 'database' ]
[ , [ @deflanguage = ] 'language' ]
[ , [ @sid = ] sid ]
[ , [ @encryptopt= ] 'encryption_option' ]
引数
- [ @loginame = ] 'login'
ログインの名前を指定します。login のデータ型は sysname で、既定値はありません。
[ @passwd = ] 'password'
ログイン パスワードを指定します。password のデータ型は sysname で、既定値は NULL です。セキュリティ メモ : 空白のパスワードは使用しないでください。強力なパスワードを使用してください。
- [ @defdb=] 'database'
ログインの既定のデータベースを指定します (そのログインがログインした後に最初に接続されるデータベース)。database のデータ型は sysname で、既定値は master です。
- [ @deflanguage = ] 'language'
ログインの既定の言語を指定します。language のデータ型は sysname で、既定値は NULL です。language を指定しない場合は、新しいログインの既定の language が、サーバーにおける現在の既定の言語に設定されます。
- [ @sid = ] 'sid'
セキュリティ ID 番号 (SID) を指定します。sid のデータ型は varbinary(16) で、既定値は NULL です。sid が NULL の場合、システムは新しいログインに対して SID を生成します。varbinary のデータ型が使用されていますが、NULL 以外の値の場合、その長さはすべて 16 バイトにする必要があります。また、既存の値は使用しないでください。sid を指定すると、たとえば、スクリプトを作成するときや SQL Server ログインをサーバー間で移動するときなど、サーバーが異なっても同じ SID をログインは使用できるようになります。
[ @encryptopt = ] 'encryption_option'
パスワードを、クリア テキストとして渡すか、またはクリア テキスト パスワードのハッシュとして渡すかを指定します。暗号化は行われないことに注意してください。ここでは、"暗号化" という用語を旧バージョンとの互換性のために使用しています。クリア テキスト パスワードが渡される場合、そのパスワードはハッシュされます。ハッシュは保存されます。encryption_option のデータ型は varchar(20) で、次のいずれかの値を指定できます。値 説明 NULL
パスワードがクリア テキストで渡されます。これは既定値です。
skip_encryption
パスワードは既にハッシュされています。データベース エンジンは、再ハッシュせずに値を格納します。
skip_encryption_old
指定されたパスワードは、SQL Server の以前のバージョンでハッシュされています。データベース エンジンは、再ハッシュせずに値を格納します。このオプションはアップグレードのために提供されています。
解説
SQL Server ログインの長さは 1 ~ 128 文字で、英字、記号、および数字を含めることができます。ログインには円記号 (\) を含めることができません。また、sa や public などの予約済みログイン名、既存のログイン名、NULL、および空の文字列 (''
) もログインには指定できません。
既定のデータベース名を把握していれば、USE ステートメントを実行しなくても指定されたデータベースに接続できます。ただし既定のデータベースを使用する場合は、既定のデータベースへのアクセス権が与えられている必要があります。このアクセス権は、データベース所有者が sp_adduser または sp_addrolemember を使用して与えるか、sp_addrole によって与えられます。
SID 番号は、サーバーでログインを一意に識別する GUID です。
サーバーの既定の言語を変更しても、既存のログインに関する既定の言語は変更されません。サーバーの既定の言語を変更するには、sp_configure を使用します。
SQL Server にログインを追加するときに既にパスワードがハッシュされている場合は、skip_encryption を使用してパスワードがハッシュされないようにすると便利です。SQL Server の以前のバージョンでパスワードがハッシュされている場合は、skip_encryption_old を使用します。
ユーザー定義のトランザクション内では、sp_addlogin を実行できません。
次の表は、sp_addlogin と共に使用されるストアド プロシージャを示しています。
ストアド プロシージャ | 説明 |
---|---|
Windows のユーザーまたはグループを追加します。 |
|
ユーザーのパスワードを変更します。 |
|
ユーザーの既定のデータベースを変更します。 |
|
ユーザーの既定の言語を変更します。 |
権限
ALTER ANY LOGIN 権限が必要です。
戻り値
0 (成功) または 1 (失敗)
例
A. SQL Server ログインを作成する
次の例では、既定のデータベースは指定せずに、パスワード B1r12-36
を指定して、ユーザー Victoria
の SQL Server ログインを作成します。
EXEC sp_addlogin 'Victoria', 'B1r12-36';
GO
B. 既定のデータベースを持つ SQL Server ログインを作成する
次の例では、パスワード B5432-3M6
および既定のデータベース corporate
を指定して、ユーザー Albert
の SQL Server ログインを作成します。
EXEC sp_addlogin 'Albert', 'B5432-3M6', 'corporate';
GO
C. 既定の言語が異なる SQL Server ログインを作成する
次の例では、パスワード 709hLKH7chjfwv
、既定のデータベース AdventureWorks
、および既定の言語 Bulgarian
を指定して、ユーザー TzTodorov
の SQL Server ログインを作成します。
EXEC sp_addlogin 'TzTodorov', '709hLKH7chjfwv', 'AdventureWorks', N'български'
D. 特定の SID を持つ SQL Server ログインを作成する
次の例では、パスワード B548bmM%f6
、既定のデータベース AdventureWorks
、既定の言語 us_english
、および SID 0x0123456789ABCDEF0123456789ABCDEF
を指定して、ユーザー Michael
の SQL Server ログインを作成します。
EXEC sp_addlogin 'Michael', 'B548bmM%f6', 'AdventureWorks', 'us_english', 0x0123456789ABCDEF0123456789ABCDEF
参照
関連項目
CREATE LOGIN (Transact-SQL)
sp_droplogin (Transact-SQL)
sp_helpuser (Transact-SQL)
sp_revokelogin (Transact-SQL)
xp_logininfo (Transact-SQL)