sp_addlogin (Transact-SQL)

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

ms173768.note(ja-jp,SQL.90).gif重要 :
この機能は、将来のバージョンの Microsoft SQL Server では削除される予定です。新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。代わりに、CREATE LOGIN を使用してください。
ms173768.security(ja-jp,SQL.90).gifセキュリティ メモ :
可能な場合は、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 です。

    ms173768.security(ja-jp,SQL.90).gifセキュリティ メモ :
    空白のパスワードは使用しないでください。強力なパスワードを使用してください。
  • [ @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 文字で、英字、記号、および数字を含めることができます。ログインには円記号 (\) を含めることができません。また、sapublic などの予約済みログイン名、既存のログイン名、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 権限が必要です。

戻り値

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)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手