共用方式為


ALTER LOGIN (Transact-SQL)

更新: 2006 年 12 月 12 日

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

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

語法

ALTER LOGIN login_name 
    { 
    <status_option> 
    | WITH <set_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

引數

  • login_name
    指定正在變更的 SQL Server 登入名稱。
  • ENABLE | DISABLE
    啟用或停用這個登入。
  • PASSWORD = 'password'
    只適用於 SQL Server 登入。指定正在變更的登入密碼。密碼會區分大小寫。
  • PASSWORD **=**hashed_password
    只適用於 HASHED 關鍵字。指定要建立之登入密碼的雜湊值。
  • HASHED
    只適用於 SQL Server 登入。指定在 PASSWORD 引數之後輸入的密碼已雜湊處理。如果未選取這個選項,則密碼要儲存至資料庫之前會先雜湊處理。

    ms189828.note(zh-tw,SQL.90).gif附註:
    這個引數只適用於由 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 登入的認證名稱。認證必須已存在於伺服器中。如需詳細資訊,請參閱<認證>。
  • NO CREDENTIAL
    移除從登入到伺服器認證的任何現有對應。如需詳細資訊,請參閱<認證>。
  • UNLOCK
    只適用於 SQL Server 登入。指定應該將鎖定的登入解除鎖定。

備註

當 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 陳述式會失敗。

ms189828.note(zh-tw,SQL.90).gif重要事項:
CHECK_EXPIRATION 和 CHECK_POLICY 只會在 和更新的版本中強制執行。如需詳細資訊,請參閱<密碼原則>。
ms189828.note(zh-tw,SQL.90).gif重要事項:
中的已知問題可能會在達到「帳戶鎖定」臨界值之後阻止重設錯誤密碼計數。此舉可能會在後續登入嘗試失敗時導致立即鎖定。您可以手動重設錯誤密碼計數,只要設定 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 權限。

如果要變更的登入是 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 的名稱改為 Joe2

ALTER LOGIN Mary5 WITH NAME = Joe2;

D. 將登入對應到認證

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

ALTER LOGIN Joe2 WITH CREDENTIAL = Custodian04;

請參閱

參考

CREATE LOGIN (Transact-SQL)
DROP LOGIN (Transact-SQL)
CREATE CREDENTIAL (Transact-SQL)
EVENTDATA (Transact-SQL)

其他資源

認證

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2006 年 12 月 12 日

新增內容:
  • 加入有關 HASHED 引數的資訊。
  • 加入有關使用 DISABLE 引數以阻止存取 Windows 群組的資訊。