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'

ログインの名前。 @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 文字を含めることができます。 ログインにはバックスラッシュ ()、予約済みログイン名 (\sapublic など) を含めることはできません。または、既に存在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 ログインを作成する

次の例では、既定のデータベースを指定せずに、パスワードを使用して、ユーザー VictoriaB1r12-36SQL Server ログインを作成します。

EXEC sp_addlogin 'Victoria', 'B1r12-36';
GO

B. 既定のデータベースを含む SQL Server ログインを作成する

次の例では、ユーザーAlbertの SQL Server ログインを作成し、パスワードを指定し、既定のcorporateB5432-3M6データベースを作成します。

EXEC sp_addlogin 'Albert', 'B5432-3M6', 'corporate';
GO

C: 別の既定の言語を持つ SQL Server ログインを作成する

次の例では、ユーザーTzTodorovの SQL Server ログインを、パスワード、既定の709hLKH7chjfwvデータベース、および既定のAdventureWorks2022Bulgarian言語を使用して作成します。

EXEC sp_addlogin 'TzTodorov', '709hLKH7chjfwv', 'AdventureWorks2022', N'български'

D. 特定の SID を持つ SQL Server ログインを作成する

次の例では、ユーザー Michaelの SQL Server ログインを、パスワード、既定の B548bmM%f6データベース、既定の AdventureWorks2022言語、 us_englishSID 0x0123456789ABCDEF0123456789ABCDEFを使用して作成します。

EXEC sp_addlogin 'Michael', 'B548bmM%f6', 'AdventureWorks2022', 'us_english', 0x0123456789ABCDEF0123456789ABCDEF