ALTER LOGIN (Transact-SQL)
變更 SQL Server 登入帳戶的屬性。
語法
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