ALTER LOGIN (Transact-SQL)

變更 SQL Server 登入帳戶的屬性。

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

語法

ALTER LOGIN login_name 
    { 
    <status_option> 
    | WITH <set_option> [ ,... ]
    | <cryptographic_credential_option>
    } 

<status_option> ::= 
        ENABLE | DISABLE

<set_option> ::=            
    PASSWORD = 'password' | hashed_password HASHED
    [ 
      OLD_PASSWORD = 'oldpassword'
      | <password_option> [<password_option> ] 
    ]
    | DEFAULT_DATABASE = database
    | DEFAULT_LANGUAGE = language
    | NAME = login_name
    | CHECK_POLICY = { ON | OFF }
    | CHECK_EXPIRATION = { ON | OFF }
    | CREDENTIAL = credential_name
    | NO CREDENTIAL
 
<password_option> ::= 
    MUST_CHANGE | UNLOCK
<cryptographic_credentials_option> ::= 
         ADD CREDENTIAL credential_name
          | DROP CREDENTIAL credential_name

引數

  • login_name
    指定正在變更的 SQL Server 登入名稱。 網域登入必須加上方括號,使用 [domain\user] 格式。

  • ENABLE | DISABLE
    啟用或停用這個登入。 停用登入並不會影響已經連接之登入的行為。 已停用的登入會保留其權限,而且依然可以模擬。

  • PASSWORD ='password'
    只適用於 SQL Server 登入。 指定正在變更的登入密碼。 密碼會區分大小寫。

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

  • HASHED
    只適用於 SQL Server 登入。 指定在 PASSWORD 引數之後輸入的密碼已雜湊處理。 如果未選取這個選項,則密碼在儲存至資料庫之前會先雜湊處理。只有針對兩部伺服器之間的登入同步處理,才應使用這個選項。 請勿使用 HASHED 選項進行例行性地變更密碼。

  • OLD_PASSWORD ='oldpassword'
    只適用於 SQL Server 登入。 將要指派新密碼之登入的目前密碼。 密碼會區分大小寫。

  • MUST_CHANGE
    只適用於 SQL Server 登入。 如果包含這個選項,則在第一次使用變更後的登入時,SQL Server 會提示您輸入更新後的密碼。

  • DEFAULT_DATABASE **=**database
    指定要指派給登入的預設資料庫。

  • DEFAULT_LANGUAGE **=**language
    指定要指派給登入的預設語言。

  • NAME = login_name
    正在重新命名之登入的新名稱。 如果這是 Windows 登入,則對應到新名稱的 Windows 主體 SID 必須與 SQL Server 中之登入相關聯的 SID 相同。 SQL Server 登入的新名稱,不能包含反斜線字元 (\)。

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

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

  • CREDENTIAL = credential_name
    對應到 SQL Server 登入的認證名稱。 認證必須已存在於伺服器中。 如需詳細資訊,請參閱<認證 (Database Engine)>。 認證無法對應至 sa 登入。

  • NO CREDENTIAL
    移除從登入到伺服器認證的任何現有對應。 如需詳細資訊,請參閱<認證 (Database Engine)>。

  • UNLOCK
    只適用於 SQL Server 登入。 指定應該將鎖定的登入解除鎖定。

  • ADD CREDENTIAL
    將可延伸金鑰管理 (EKM) 提供者認證加入到登入中。 如需詳細資訊,請參閱<可延伸金鑰管理 (EKM)>。

  • DROP CREDENTIAL
    移除登入的可延伸金鑰管理 (EKM) 提供者認證。 如需詳細資訊,請參閱<可延伸金鑰管理 (EKM)>。

備註

當 CHECK_POLICY 設定為 ON 時,無法使用 HASHED 引數。

當 CHECK_POLICY 變更為 ON 時,會發生下列行為:

  • 密碼記錄會使用目前密碼雜湊的值來初始化。

當 CHECK_POLICY 變更為 OFF 時,會發生下列行為:

  • CHECK_EXPIRATION 也會設為 OFF。

  • 會清除密碼記錄。

  • 會重設 lockout_time 的值。

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

如果 CHECK_POLICY 設為 OFF,CHECK_EXPIRATION 就不能設為 ON。 具有這些選項組合的 ALTER LOGIN 陳述式會失敗。

您無法使用含 DISABLE 引數的 ALTER_LOGIN 來拒絕存取 Windows 群組。 例如,ALTER_LOGIN [domain\group] DISABLE 將傳回下列錯誤訊息:

「訊息 15151,層級 16,狀態 1,行 1」

「無法改變登入 'Domain\Group',因為它不存在或您沒有權限。」

這是預設行為。

權限

需要 ALTER ANY LOGIN 權限。

如果使用 CREDENTIAL 選項,還需要 ALTER ANY CREDENTIAL 權限。

如果變更的登入是 sysadmin 固定伺服器角色的成員,或 CONTROL SERVER 權限的被授與者,則在進行下列變更時,也需要 CONTROL SERVER 權限:

  • 重設密碼,但不提供舊密碼。

  • 啟用 MUST_CHANGE、CHECK_POLICY 或 CHECK_EXPIRATION。

  • 變更登入名稱。

  • 啟用或停用登入。

  • 將登入對應到不同的認證。

主體可以為它自己的登入變更密碼、預設語言和預設資料庫。

範例

A.啟用已停用的登入

下列範例會啟用登入 Mary5。

ALTER LOGIN Mary5 ENABLE;

B.變更登入的密碼

下列範例會將登入 Mary5 的密碼變更為增強式密碼。

ALTER LOGIN Mary5 WITH PASSWORD = '<enterStrongPasswordHere>';

C.變更登入的名稱

下列範例會將登入 Mary5 的名稱變更為 John2。

ALTER LOGIN Mary5 WITH NAME = John2;

D.將登入對應到認證

下列範例會將登入 John2 對應到認證 Custodian04。

ALTER LOGIN John2 WITH CREDENTIAL = Custodian04;

E.將登入對應到可延伸金鑰管理認證

下列範例會將登入 Mary5 對應到 EKM 認證 EKMProvider1。

ALTER LOGIN Mary5
ADD CREDENTIAL EKMProvider1;
GO

F.解除鎖定登入

若要解除鎖定 SQL Server 登入,請執行下列陳述式 (以您要的帳戶密碼取代其中的 ****)。

ALTER LOGIN [Mary5] WITH PASSWORD = '****' UNLOCK ;
GO

若要在不變更密碼的情況下解除鎖定登入,請先關閉再開啟 CHECK_POLICY。

ALTER LOGIN [Mary5] WITH CHECK_POLICY = OFF;
ALTER LOGIN [Mary5] WITH CHECK_POLICY = ON;
GO

G.使用 HASHED 變更登入密碼

下列範例會將 TestUser 登入密碼變更為已雜湊的值。

ALTER LOGIN TestUser WITH 
PASSWORD = 0x01000CF35567C60BFB41EBDE4CF700A985A13D773D6B45B90900 HASHED ;
GO

請參閱

參考

CREATE LOGIN (Transact-SQL)

DROP LOGIN (Transact-SQL)

CREATE CREDENTIAL (Transact-SQL)

EVENTDATA (Transact-SQL)

概念

認證 (Database Engine)

可延伸金鑰管理 (EKM)