共用方式為


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 選項進行例行性地變更密碼。

    [!附註]

    這個引數只適用於由 SQL Server 2000 或更新版本所產生的雜湊。

  • 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)>。

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

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

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

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

備註

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

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

  • 除非 CHECK_EXPIRATION 明確設為 OFF,否則它也會設為 ON。

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

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

  • CHECK_EXPIRATION 也會設為 OFF。

  • 會清除密碼記錄。

  • 會重設 lockout_time 的值。

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

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

重要注意事項重要事項

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

重要注意事項重要事項

Windows Server 2003 中的已知問題可能會在達到「帳戶鎖定」臨界值之後阻止重設錯誤密碼計數。此舉可能會在後續登入嘗試失敗時導致立即鎖定。您可以手動重設錯誤密碼計數,只要設定 CHECK_POLICY = OFF,後面再接著 CHECK_POLICY = ON 即可。如需有關「帳戶鎖定」臨界值的詳細資訊,請參閱 Microsoft 知識庫文件 818078:<您的使用者帳戶可能已被不當鎖定>(機器翻譯)。

您無法搭配 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