sp_addlogin (Transact-SQL)

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

重要な注意事項重要

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

セキュリティに関する注意セキュリティに関する注意

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

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

構文

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 の以前のバージョンでハッシュされています。データベース エンジンは、再ハッシュせずに値を格納します。このオプションはアップグレードのために提供されています。

リターン コードの値

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

説明

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 と共に使用されるストアド プロシージャを示しています。

ストアド プロシージャ

説明

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 ログインを作成する

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

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

C. 既定の言語が異なる SQL Server ログインを作成する

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

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

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

次の例では、パスワード B548bmM%f6、既定のデータベース AdventureWorks2008R2、既定の言語 us_english、および SID 0x0123456789ABCDEF0123456789ABCDEF を指定して、ユーザー Michael の SQL Server ログインを作成します。

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