共用方式為


CREATE LOGIN (Transact-SQL)

 

建立 Database Engine 和 SQL Server 的 Azure SQL Database 登入。

適用於:SQL Server (SQL Server 2008 至目前版本)、Azure SQL Database。

主題連結圖示Transact-SQL 語法慣例

語法

-- SQL Server Syntax
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 Windows Azure SQL Database

CREATE LOGIN login_name
 { WITH <option_list3> }

<option_list3> ::= 
    PASSWORD = { 'password' }
    [ SID = sid ]

引數

  • login_name
    指定建立的登入名稱。 有四種類型的登入:SQL Server 登入、Windows 登入、憑證對應登入和非對稱金鑰對應登入。 當您建立從 Windows 網域帳戶對應的登入時,對於 Windows 2000 之前版本的使用者登入名稱,您必須使用 [<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

    適用於:SQL Server 2008 至 SQL Server 2014。

    僅適用於 HASHED 關鍵字。 指定要建立之登入的密碼雜湊值。

  • HASHED

    適用於:SQL Server 2008 至 SQL Server 2014。

    只適用於 SQL Server 登入。 指定在 PASSWORD 引數之後輸入的密碼已雜湊處理。 如果未選取這個選項,則輸入的密碼字串在儲存至資料庫之前會先雜湊處理。 只有要在兩部伺服器之間移轉資料庫時,才應使用這個選項。 請勿使用 HASHED 選項來建立新登入。 HASHED 選項無法與 SQL Server 7 或更早版本所建立的雜湊搭配使用。

  • MUST_CHANGE

    適用於:SQL Server 2008 至 SQL Server 2014。

    只適用於 SQL Server 登入。 如果有包含這個選項,第一次使用新登入時,SQL Server 會提示使用者輸入新密碼。

  • CREDENTIAL **=**credential_name

    適用於:SQL Server 2008 至 SQL Server 2014。

    對應到新 SQL Server 登入的認證名稱。 認證必須已存在於伺服器中。 目前這個選項只會將認證連結到登入。 認證無法對應至 sa 登入。

  • SID = sid
    用來重新建立登入。 僅適用 SQL Server 驗證登入,不適用 Windows 驗證登入。 指定新 SQL Server 驗證登入的 SID。 如果未使用這個選項,SQL Server 將自動指派 SID。 SID 結構取決於 SQL Server 版本。

    • SQL Server 登入 SID:以 GUID 為基礎的 16 位元組 (binary (16)) 常值。 例如 SID = 0x14585E90117152449347750164BA00A7。

    • SQL Database 登入 SID:Azure SQL Database 的有效 SID 結構。 這通常是由 0x01060000000000640000000000000000 再加上代表 GUID 的 16 位元組組成的 32 位元組 (binary(32)) 常值。 例如 SID = 0x0106000000000064000000000000000014585E90117152449347750164BA00A7。

  • DEFAULT_DATABASE **=**database

    適用於:SQL Server 2008 至 SQL Server 2014。

    指定要指派給登入的預設資料庫。 如果不包括這個選項,預設資料庫將設為 master。

  • DEFAULT_LANGUAGE **=**language

    適用於:SQL Server 2008 至 SQL Server 2014。

    指定要指派給登入的預設語言。 如果不包括這個選項,預設語言將設為伺服器的目前預設語言。 如果伺服器的預設語言在未來有所變更,登入的預設語言會保持不變。

  • CHECK_EXPIRATION = { ON | OFF }

    適用於:SQL Server 2008 至 SQL Server 2014。

    只適用於 SQL Server 登入。 指定是否應該對這個登入強制執行密碼逾期原則。 預設值是 OFF。

  • CHECK_POLICY = { ON | OFF }

    適用於:SQL Server 2008 至 SQL Server 2014。

    只適用於 SQL Server 登入。 指定應該在這項登入上強制使用執行 SQL Server 之電腦的 Windows 密碼原則。 預設值是 ON。

    如果 Windows 原則要求增強式密碼,則密碼必須至少包含下列四個特性的其中三個:

    • 大寫字元 (A-Z)。

    • 小寫字元 (a-z)。

    • 數字 (0-9)。

    • 其中一個非英數字元,例如空格、_、@、*、^、%、!、$、# 或 &。

  • WINDOWS

    適用於:SQL Server 2008 至 SQL Server 2014。

    指定登入對應到 Windows 登入。

  • CERTIFICATE certname

    適用於:SQL Server 2008 至 SQL Server 2014。

    指定與這項登入相關聯的憑證名稱。 這個憑證必須已存在於 master 資料庫中。

  • ASYMMETRIC KEY asym_key_name

    適用於:SQL Server 2008 至 SQL Server 2014。

    指定與這項登入相關聯的非對稱金鑰名稱。 這個金鑰必須已存在於 master 資料庫中。

備註

密碼會區分大小寫。

僅當您建立 SQL Server 登入時,才支援預先雜湊處理密碼。

如果同時指定 HASHED 和 CHECK_POLICY = ON 引數,將不會檢查密碼複雜性,直到下一次變更密碼為止。

如果指定 MUST_CHANGE,則 CHECK_EXPIRATION 和 CHECK_POLICY 必須設為 ON。 否則,陳述式便會失敗。

不支援 CHECK_POLICY = OFF 和 CHECK_EXPIRATION = ON 的結合。

當 CHECK_POLICY 設為 OFF 時,lockout_time 會重設,且 CHECK_EXPIRATION 會設為 OFF。

System_CAPS_important重要事項

CHECK_EXPIRATION 和 CHECK_POLICY 只會在 Windows Server 2003 和更新的版本中強制執行。 如需詳細資訊,請參閱<密碼原則>。

從憑證或非對稱金鑰建立的登入只能用於程式碼簽章。 它們不能用來連接到 SQL Server。 僅當憑證或非對稱金鑰已存在於 master 時,您才能從憑證或非對稱金鑰中建立登入。

如需傳送登入的指令碼,請參閱如何在 SQL Server 2005 和 SQL Server 2008 的執行個體之間傳送登入和密碼

建立登入會自動啟用新登入,並授與登入伺服器層級的 CONNECT SQL 權限。

Windows Azure SQL Database 登入

在 SQL Database 中,CREATE LOGIN 陳述式必須是批次中唯一的陳述式。

在 SQL Database 中,您必須連接至 master 資料庫以建立登入。

SQL Server 規則可讓您建立 <loginname>@<servername> 格式的 SQL Server 驗證登入。 如果您的 SQL Database 伺服器是 myazureserver,而您的登入是 myemail@live.com,則必須以 myemail@live.com@myazureserver 的形式提供登入。 只有當您計劃使用此認證連接到單一伺服器,才使用此技巧。 連接到 Azure SQL Database 時,有些舊版的 SQL 用戶端程式庫需要使用 <loginname>@<servername> 格式。

如需有關 SQL Database 登入的詳細資訊,請參閱<管理 Windows Azure SQL Database 中的資料庫和登入>。

Permissions

在 SQL Server 中,需要伺服器的 ALTER ANY LOGIN 權限或 securityadmin 固定伺服器角色的成員資格。

在 SQL Database 中,只有 master 資料庫中的伺服器層級主體登入 (由佈建程序所建立) 或 loginmanager 資料庫角色成員,才能建立新登入。

如果使用 CREDENTIAL 選項,則也需要伺服器的 ALTER ANY CREDENTIAL 權限。

後續步驟

建立登入之後,登入就可以連接到 Database Engine 或 SQL Database,但是只會取得 public 角色的權限。 請考慮執行下列其中一些活動。

範例

A. 建立具有密碼的登入

下列範例會針對特定的使用者建立登入,並指派密碼。

CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>';
GO

B. 建立具有密碼的登入

下列範例會針對特定的使用者建立登入,並指派密碼。MUST_CHANGE 選項需要使用者在第一次連接到伺服器時變更這個密碼。

適用於:SQL Server 2008 至 SQL Server 2014。

CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>' MUST_CHANGE;
GO

C. 建立對應到認證的登入

下列範例會針對特定使用者建立登入 (透過使用者)。 此登入會對應到認證。

適用於:SQL Server 2008 至 SQL Server 2014。

CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>', 
    CREDENTIAL = <credentialName>;
GO

D. 從憑證建立登入

下列範例會從 master 的憑證建立特定使用者的登入。

適用於:SQL Server 2008 至 SQL Server 2014。

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 網域帳戶中建立登入

下列範例會從 Windows 網域帳戶建立登入。

適用於:SQL Server 2008 至 SQL Server 2014。

CREATE LOGIN [<domainName>\<login_name>] FROM WINDOWS;
GO

F. 從 SID 建立登入

下列範例會先建立 SQL Server 驗證登入,並判斷登入的 SID。

CREATE LOGIN TestLogin WITH PASSWORD = 'SuperSecret52&&';

SELECT name, sid FROM sys.sql_logins WHERE name = 'TestLogin';
GO

我的查詢傳回 0x241C11948AEEB749B0D22646DB1A19F2 做為 SID。 您的查詢將傳回不同的值。 下列陳述式會刪除登入,並重新建立登入。 使用來自前一個查詢的 SID。

DROP LOGIN TestLogin;
GO

CREATE LOGIN TestLogin 
WITH PASSWORD = 'SuperSecret52&&', SID = 0x241C11948AEEB749B0D22646DB1A19F2;

SELECT * FROM sys.sql_logins WHERE name = 'TestLogin';
GO

請參閱

主體 (Database Engine)
密碼原則
ALTER LOGIN (Transact-SQL)
DROP LOGIN (Transact-SQL)
EVENTDATA (Transact-SQL)
建立登入