CREATE LOGIN (Transact-SQL)
SQL Server、Windows Azure SQL データベース、および SQL Server PDW の データベース エンジン ログインを作成します。
注 |
---|
CREATE LOGIN オプションは SQL Server、SQL データベース、および SQL Server PDW で異なります。 |
構文
-- Syntax for SQL Server
CREATE LOGIN login_name { WITH <option_list1> | FROM <sources> }
<option_list1> ::=
PASSWORD = { 'password' | hashed_password HASHED } [ MUST_CHANGE ]
[ , <option_list2> [ ,... ] ]
<option_list2> ::=
SID = sid
| DEFAULT_DATABASE = database
| DEFAULT_LANGUAGE = language
| CHECK_EXPIRATION = { ON | OFF}
| CHECK_POLICY = { ON | OFF}
| CREDENTIAL = credential_name
<sources> ::=
WINDOWS [ WITH <windows_options>[ ,... ] ]
| CERTIFICATE certname
| ASYMMETRIC KEY asym_key_name
<windows_options> ::=
DEFAULT_DATABASE = database
| DEFAULT_LANGUAGE = language
構文
-- Syntax for SQL Database
CREATE LOGIN login_name { WITH <option_list3> }
<option_list3> ::=
PASSWORD = { 'password' }
構文
-- Syntax for SQL Server PDW
CREATE LOGIN login_name { WITH <option_list4> }
< option_list4> ::=
PASSWORD = { 'password' } [ MUST_CHANGE ]
[ , <option_list5> [ ,... ] ]
<option_list5> ::=
CHECK_EXPIRATION = { ON | OFF}
| CHECK_POLICY = { ON | OFF}
引数
login_name
作成するログインの名前を指定します。ログインには、SQL Server ログイン、Windows ログイン、証明書マッピング ログイン、非対称キー マッピング ログインの 4 種類があります。Windows ドメイン アカウントからマップされるログインを作成する場合は、Windows 2000 よりも前の Windows で使用されていた [<domainName>\<login_name>] 形式のユーザー ログイン名を使用する必要があります。login_name@DomainName 形式の UPN は使用できません。たとえば、このトピックで後ほど取り上げる「例 D」を参照してください。SQL Server 認証ログインの種類は sysname で、識別子 に関するルールに準拠している必要があり、'\' を含めることはできません。Windows ログインには "\" を含めることができます。PASSWORD ='password'
SQL Server ログインのみに適用されます。作成するログインのパスワードを指定します。複雑なパスワードの使用をお勧めします。詳細については、「強力なパスワード」および「パスワード ポリシー」を参照してください。パスワードでは大文字と小文字が区別されます。パスワードの長さは 8 文字以上 128 文字以下である必要があります。パスワードには、a ~ z、A ~ Z、0 ~ 9 およびほとんどの英数字以外の文字を含めることができます。パスワードには、単一引用符、または login_name を含めることはできません。
PASSWORD **=**hashed_password
HASHED キーワードにのみ適用されます。作成するログインのパスワードのハッシュ値を指定します。HASHED
SQL Server ログインのみに適用されます。PASSWORD 引数の後に入力されたパスワードが、ハッシュ済みであることを示します。このオプションを選択しなかった場合、パスワードとして入力した文字列は、ハッシュされてからデータベースに格納されます。このオプションは、あるサーバーから別のサーバーにデータベースを移行する場合にのみ使用してください。新しいログインを作成する場合は HASHED オプションを使用しないでください。HASHED オプションは SQL Server 7 以前で作成されたハッシュでは使用できません。MUST_CHANGE
SQL Server ログインのみに適用されます。このオプションを指定した場合は、新しいログインを最初に使用するとき、新しいパスワードの入力求めるメッセージがユーザーに対して表示されます。CREDENTIAL **=**credential_name
新しい SQL Server ログインにマップする資格情報の名前を指定します。この資格情報はサーバー内に存在する必要があります。現在このオプションは、資格情報をログインに関連付けるだけです。資格情報を sa ログインにマップすることはできません。SID = sid
SQL Server ログインのみに適用されます。新しい SQL Server ログインの GUID を指定します。このオプションを選択しない場合は、GUID が自動的に割り当てられます。DEFAULT_DATABASE **=**database
ログインに割り当てられる既定のデータベースを指定します。このオプションを指定しない場合は、既定のデータベースが master に設定されます。DEFAULT_LANGUAGE **=**language
ログインに割り当てられる既定の言語を指定します。このオプションを指定しない場合は、サーバーの現在の既定の言語が既定の言語になります。サーバーの既定の言語が将来変更されても、ログインの既定の言語は変更されません。CHECK_EXPIRATION = { ON | OFF }
SQL Server ログインのみに適用されます。このログインに、パスワードの有効期限ポリシーを適用するかどうかを指定します。既定値は OFF です。CHECK_POLICY = { ON | OFF }
SQL Server ログインのみに適用されます。このログインに、SQL Server を実行しているコンピューターの、Windows のパスワード ポリシーを適用するかどうかを指定します。既定値は ON です。Windows のポリシーで強力なパスワードが求められる場合は、次の 4 つの特性のうちの少なくとも 3 つをパスワードに含める必要があります。
大文字 (A ~ Z)。
小文字 (a ~ z)。
数字 (0 ~ 9)。
スペース、_、@、*、^、%、!、$、#、& などの英数字以外の文字。
WINDOWS
ログインを Windows ログインにマップするよう指定します。CERTIFICATE certname
ログインに関連付ける証明書の名前を指定します。この証明書は、master データベース内に既に存在する必要があります。ASYMMETRIC KEY asym_key_name
ログインに関連付ける非対称キーの名前を指定します。このキーは、master データベース内に既に存在する必要があります。
説明
パスワードでは大文字と小文字が区別されます。
パスワードの事前ハッシュは、SQL Server ログインを作成するときにのみサポートされます。
MUST_CHANGE を指定した場合、CHECK_EXPIRATION および CHECK_POLICY は ON に設定する必要があります。ON に設定しない場合、ステートメントは失敗します。
CHECK_POLICY = OFF と CHECK_EXPIRATION = ON の組み合わせはサポートされていません。
CHECK_POLICY を OFF に設定すると、lockout_time は再設定され、CHECK_EXPIRATION は OFF に設定されます。
重要 |
---|
CHECK_EXPIRATION および CHECK_POLICY は、Windows Server 2003 以降でのみ適用されます。詳細については、「パスワード ポリシー」を参照してください。 |
証明書または非対称キーから作成されたログインはコード署名用にのみ使用されます。SQL Server への接続には使用できません。証明書または非対称キーからログインを作成できるのは、その証明書または非対称キーが master に存在している場合のみです。
スクリプトでログインを転送する場合は、「SQL Server 2005 のインスタンス間でログインおよびパスワードを転送する方法」を参照してください。
ログインを作成すると、自動的に新しいログインが有効になり、ログインにサーバー レベルの CONNECT SQL 権限が与えられます。
SQL データベース ログイン
SQL データベース では、CREATE LOGIN ステートメントがバッチ内の唯一のステートメントである必要があります。
sqlcmd などの SQL データベースに接続するいくつかのメソッドでは、<login>@<server> の表記法を使用して、接続文字列のログイン名に SQL データベース サーバー名を追加する必要があります。たとえば、ログインが login1 で、SQL データベース サーバーの完全修飾名が servername.database.windows.net である場合、接続文字列の username パラメーターは login1@servername となる必要があります。username パラメーターの合計の長さは 128 文字であるため、login_name は、127 文字からサーバー名の長さを差し引いた文字数に制限されます。この例では、servername が 10 文字であるため、login_name には 117 文字までしか指定できません。
SQL データベース では、ログインを作成するには master データベースに接続する必要があります。
SQL データベース ログインの詳細については、「Windows Azure SQL データベースにおけるデータベースとログインの管理」を参照してください。
権限
SQL Server および SQL Server PDW では、サーバーに対する ALTER ANY LOGIN 権限または securityadmin 固定サーバー ロールのメンバーシップが必要です。
SQL データベース では、(準備プロセスによって作成される) サーバーレベルのプリンシパルのログインまたは master データベースの loginmanager データベース ロールのメンバーだけが新しいログインを作成できます。
CREDENTIAL オプションを使用する場合は、サーバーに対する ALTER ANY CREDENTIAL 権限も必要です。
次の手順
ログインが作成されたら、ログインはデータベース エンジン、SQL データベース、または SQL Server PDW アプライアンスに接続できますが、public ロールに与えられた権限しか持ちません。次の操作のいくつかを実行することを検討してください。
データベースに接続するには、ログイン用のデータベース ユーザーを作成する必要があります。詳細については、「CREATE USER (Transact-SQL)」を参照してください。
CREATE SERVER ROLE (Transact-SQL) を使用してユーザー定義サーバー ロールを作成します。ユーザー定義サーバー ロールに新しいログインを追加するには、ALTER SERVER ROLE … ADD MEMBER を使用します。詳細については、「CREATE SERVER ROLE (Transact-SQL)」および「ALTER SERVER ROLE (Transact-SQL)」を参照してください。
固定サーバー ロールにログインを追加するには、sp_addsrvrolemember を使用します。詳細については、「サーバー レベルのロール」および「sp_addsrvrolemember (Transact-SQL)」を参照してください。
新しいログインまたはログインを含むロールにサーバー レベルの権限を許可するには、GRANT ステートメントを使用します。詳細については、「GRANT (Transact-SQL)」を参照してください。
使用例
A. パスワード付きのログインを作成する
すべてに適用されます。
次の例では、特定のユーザーのログインを作成し、パスワードを割り当てます。
CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>';
GO
B. パスワード付きのログインを作成する
適用対象: SQL Server および SQL Server PDW。
次の例では、特定のユーザーのログインを作成し、パスワードを割り当てます。MUST_CHANGE オプションが指定されているため、ユーザーは、最初にサーバーに接続するときにこのパスワードを変更する必要があります。
CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>' MUST_CHANGE;
GO
C. 資格情報にマップされるログインを作成する
適用対象: SQL Server。
次の例では、ユーザーを使用して、特定のユーザーのログインを作成します。このログインは資格情報にマップされます。
CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>',
CREDENTIAL = <credentialName>;
GO
D. 証明書からログインを作成する
適用対象: SQL Server。
次の例では、master の証明書から特定のユーザーのログインを作成します。
USE MASTER;
CREATE CERTIFICATE <certificateName>
WITH SUBJECT = '<login_name> certificate in master database',
EXPIRY_DATE = '12/05/2025';
GO
CREATE LOGIN <login_name> FROM CERTIFICATE <certificateName>;
GO
E. Windows ドメイン アカウントからログインを作成する
適用対象: SQL Server。
次の例では、Windows ドメイン アカウントからログインを作成します。
CREATE LOGIN [<domainName>\<login_name>] FROM WINDOWS;
GO