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