sp_addlogin (Transact-SQL)

適用対象: SQL Server

ユーザーが SQL Server 認証を使用して SQL Server のインスタンスに接続できるようにする新しい SQL Server ログインを作成します。

重要

この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 代わりに CREATE LOGIN を使用してください。

重要

可能な場合は、Windows 認証を使用します。

Transact-SQL 構文表記規則

構文

sp_addlogin
    [ @loginame = ] N'loginame'
    [ , [ @passwd = ] N'passwd' ]
    [ , [ @defdb = ] N'defdb' ]
    [ , [ @deflanguage = ] N'deflanguage' ]
    [ , [ @sid = ] sid ]
    [ , [ @encryptopt = ] 'encryptopt' ]
[ ; ]

引数

[ @loginame = ] N'loginame'

ログインの名前。 @loginamesysname で、既定値はありません。

[ @passwd = ] N'passwd'

ログイン パスワード。 @passwdsysname で、既定値は NULL です。

重要

空白のパスワードは使用しないでください。 強力なパスワードを使用してください。

[ @defdb = ] N'defdb'

ログインの既定のデータベース (ログイン後にログインが最初に接続されるデータベース)。 @defdbsysname で、既定値は master です。

[ @deflanguage = ] N'deflanguage'

ログインの既定の言語。 @deflanguagesysname で、既定値は NULL です。 @deflanguageが指定されていない場合、新しいログインの既定の@deflanguageは、サーバーの現在の既定の言語に設定されます。

[ @sid = ] sid

セキュリティ ID 番号 (SID)。 @sidvarbinary(16) で、既定値は NULL です。 @sidNULL場合、システムは新しいログインの SID を生成します。 varbinaryデータ型を使用しているにもかかわらず、NULL以外の値は正確に 16 バイトの長さにする必要があり、まだ存在することはできません。 @sidを指定すると便利です。たとえば、SQL Server ログインをスクリプト化したり、あるサーバーから別のサーバーに移動したりして、ログインが異なるサーバー上で同じ SID を持つ必要がある場合などです。

[ @encryptopt = ] 'encryptopt'

パスワードを、クリア テキストとして渡すか、またはクリア テキスト パスワードのハッシュとして渡すかを指定します。 暗号化は行われません。 ここでは、"暗号化" という用語を旧バージョンとの互換性のために使用しています。 クリア テキスト パスワードが渡された場合は、ハッシュされます。 ハッシュは保存されます。 @encryptoptvarchar(20)であり、次のいずれかの値を指定できます。

Value 説明
NULL (既定値) パスワードがクリア テキストで渡されます。
skip_encryption パスワードは既にハッシュされています。 データベース エンジンは、値を再ハッシュせずに格納する必要があります。
skip_encryption_old 指定されたパスワードは、以前のバージョンの SQL Server によってハッシュされました。 データベース エンジンは、値を再ハッシュせずに格納する必要があります。 このオプションは、アップグレード目的でのみ提供されます。

リターン コードの値

0 (成功) または 1 (失敗)。

解説

SQL Server ログインには、文字、記号、数字を含む 1 ~ 128 文字を含めることができます。 ログインにはバックスラッシュ (\) を含めることはできません。たとえば、 sapublic、既に存在する、または NULL または空の文字列である予約済みログイン名を指定できます。

既定のデータベースの名前が指定されている場合は、 USE ステートメントを実行せずに、指定したデータベースに接続できます。 ただし、データベース所有者 ( sp_addusersp_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