ALTER LOGIN (Transact-SQL)

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

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

選取產品

在下列資料列中,選取您感興趣的產品名稱,而且只會顯示該產品的資訊。

* SQL Server *  

 

SQL Server

語法

-- Syntax for 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 啟用或停用此登入。 停用登入並不會影響已經連接之登入的行為。 (使用 KILL 陳述式來終止現有的連線。)已停用的登入會保留其權限,且依然可以模擬。

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

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

重要

當登入 (或自主資料庫使用者) 連接並通過驗證時,此連接就會快取有關登入的識別資訊。 若為 Windows 驗證登入,這就包括 Windows 群組中成員資格的相關資訊。 只要維持連接,登入的識別就會維持驗證狀態。 若要強制變更身分識別,例如 Windows 群組成員資格中的密碼重設或變更,登入必須從驗證授權單位登出 (Windows 或SQL Server) ,然後再次登入。 系統管理員 (sysadmin) 固定伺服器角色的成員或任何擁有 ALTER ANY CONNECTION 權限的登入都可以使用 KILL 命令來結束連接並強制登入重新連接。 SQL Server Management Studio可以在開啟多個連線至物件總管和查詢編輯器視窗時重複使用連線資訊。 關閉所有連接以強制重新連接。

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

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

MUST_CHANGE 僅適用于SQL Server登入。 如果包含此選項,SQL Server會在第一次使用已變更登入時提示更新的密碼。

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

DEFAULT_LANGUAGE =language 指定要指派給登入的預設語言。 所有 SQL Database 登入的預設語言都是英文且無法變更。 Linux 上的 SQL Server上登入的預設語言 sa 是英文,但可以變更。

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登入的認證名稱。 認證必須已存在於伺服器中。 如需詳細資訊,請參閱認證。 認證無法對應至 sa 登入。

NO CREDENTIAL 移除對應至伺服器認證的任何現有登入對應。 如需詳細資訊,請參閱認證

UNLOCK 僅適用于SQL Server登入。 指定應該將鎖定的登入解除鎖定。

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

DROP CREDENTIAL 將可延伸金鑰管理 (EKM) 提供者認證從登入移除。 如需詳細資訊,請參閱 [可延伸金鑰管理 (EKM) ] (。/../relational-databases/security/encryption/extensible-key-management-ekm.md) 。

備註

當 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 [網域\群組] DISABLE 會傳回下列錯誤訊息:

"Msg 15151, Level 16, State 1, Line 1 "Cannot alter the login '*Domain\Group*', because it does not exist or you do not have permission."

這是原廠設定。

在SQL Database中,驗證連線和伺服器層級防火牆規則所需的登入資料會暫時快取在每個資料庫中。 此快取會定期重新整理。 若要重新整理驗證快取,並確定資料庫擁有登入資料表的最新版本,請執行 DBCC FLUSHAUTHCACHE

權限

需要 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. 在以登入身分登入時,變更登入密碼

如果您嘗試為目前用來登入的登入變更密碼,但沒有 ALTER ANY LOGIN 權限,就必須指定 OLD_PASSWORD 選項。

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

D. 變更登入的名稱

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

ALTER LOGIN Mary5 WITH NAME = John2;

E. 將登入對應到認證

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

ALTER LOGIN John2 WITH CREDENTIAL = Custodian04;

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

下列範例會將登入 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

另請參閱

* SQL Database *

 

SQL Database

SQL Server

語法

-- Syntax for Azure SQL Database

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

<status_option> ::=
    ENABLE | DISABLE

<set_option> ::=
    PASSWORD ='password'
    [
      OLD_PASSWORD ='oldpassword'
    ]
    | NAME = login_name

引數

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

ENABLE | DISABLE 啟用或停用此登入。 停用登入並不會影響已經連接之登入的行為。 (使用 KILL 陳述式來終止現有的連線。)已停用的登入會保留其權限,且依然可以模擬。

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

持續作用中的 SQL Database 連線至少每 10 小時就需要授權 (由「資料庫引擎」執行)。 「資料庫引擎」會嘗試使用最初提交的密碼重新授權,而且不需要使用者輸入。 基於效能考量,當密碼在 SQL Database 中重設時時,不會重新驗證連線,即使連線因為連線共用而重設。 這和內部部署 SQL Server 的行為不同。 如果自從連線初始授權後密碼已經變更,則必須中斷該連線,然後使用新密碼建立新連線。 具有 KILL DATABASE CONNECTION 權限的使用者可以使用 KILL 命令明確地中斷對 SQL Database 的連線。 如需詳細資訊,請參閱 KILL

重要

當登入 (或自主資料庫使用者) 連接並通過驗證時,此連接就會快取有關登入的識別資訊。 若為 Windows 驗證登入,這就包括 Windows 群組中成員資格的相關資訊。 只要維持連接,登入的識別就會維持驗證狀態。 若要強制變更身分識別,例如 Windows 群組成員資格中的密碼重設或變更,登入必須從驗證授權單位登出 (Windows 或SQL Server) ,然後再次登入。 系統管理員 (sysadmin) 固定伺服器角色的成員或任何擁有 ALTER ANY CONNECTION 權限的登入都可以使用 KILL 命令來結束連接並強制登入重新連接。 SQL Server Management Studio開啟多個連線至物件總管和查詢編輯器視窗時,可以重複使用連線資訊。 關閉所有連接以強制重新連接。

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

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

備註

在SQL Database中,驗證連線所需的登入資料,並在每個資料庫中暫時快取伺服器層級防火牆規則。 此快取會定期重新整理。 若要重新整理驗證快取,並確定資料庫擁有登入資料表的最新版本,請執行 DBCC FLUSHAUTHCACHE

權限

需要 ALTER ANY LOGIN 權限。

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

  • 重設密碼,但不提供舊密碼。
  • 變更登入名稱。
  • 啟用或停用登入。
  • 將登入對應到不同的認證。

主體可以變更自己的登入密碼。

範例

這些範例也包含使用其他 SQL 產品的範例。 請查看支援上面哪些引數。

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

適用于:SQL Server 2008 和更新版本。

ALTER LOGIN Mary5
ADD CREDENTIAL EKMProvider1;
GO

F. 使用 HASHED 變更登入密碼

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

適用于:SQL Server 2008 和更新版本。

ALTER LOGIN TestUser WITH
PASSWORD = 0x01000CF35567C60BFB41EBDE4CF700A985A13D773D6B45B90900 HASHED ;
GO

另請參閱

* SQL 受管理執行個體 *

 

Azure SQL 受控執行個體

Syntax

-- Syntax for SQL Server and Azure SQL Managed Instance

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

注意

建立完成後的受控執行個體 Azure AD 管理員已變更。 如需詳細資訊,請參閱 MI 的新 Azure AD 管理員功能

-- Syntax for Azure SQL Managed Instance using Azure AD logins

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

<status_option> ::=
    ENABLE | DISABLE

<set_option> ::=
     DEFAULT_DATABASE = database
   | DEFAULT_LANGUAGE = language

引數

適用於 SQL 和 Azure AD 登入的引數

login_name指定正在變更之SQL Server登入的名稱。 Azure AD 登入必須指定為 user@domain。 例如 john.smith@contoso.com,或指定為 Azure AD 群組或應用程式名稱。 針對 Azure AD 登入,login_name 必須對應至 master 資料庫中建立的現有 Azure AD 登入。

ENABLE | DISABLE 啟用或停用此登入。 停用登入並不會影響已經連接之登入的行為。 (使用 KILL 陳述式來終止現有的連線。)已停用的登入會保留其權限,且依然可以模擬。

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

DEFAULT_LANGUAGE =language 指定要指派給登入的預設語言。 所有 SQL Database 登入的預設語言都是英文且無法變更。 Linux 上的 SQL Server上登入的預設語言 sa 是英文,但可以變更。

僅適用於 SQL 登入的引數

PASSWORD ='password'僅適用于SQL Server登入。 指定正在變更的登入密碼。 密碼會區分大小寫。 密碼也不適合搭配外部登入使用,例如 Azure AD 登入。

持續作用中的 SQL Database 連線至少每 10 小時就需要授權 (由「資料庫引擎」執行)。 「資料庫引擎」會嘗試使用最初提交的密碼重新授權,而且不需要使用者輸入。 基於效能考量,當密碼在 SQL Database 中重設時時,不會重新驗證連線,即使連線因為連線共用而重設。 這和內部部署 SQL Server 的行為不同。 如果自從連線初始授權後密碼已經變更,則必須中斷該連線,然後使用新密碼建立新連線。 具有 KILL DATABASE CONNECTION 權限的使用者可以使用 KILL 命令明確地中斷對 SQL Database 的連線。 如需詳細資訊,請參閱 KILL

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

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

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

MUST_CHANGE
僅適用于SQL Server登入。 如果包含此選項,SQL Server會在第一次使用已變更登入時提示更新的密碼。

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登入的認證名稱。 認證必須已存在於伺服器中。 如需詳細資訊,請參閱認證。 認證無法對應至 sa 登入。

NO CREDENTIAL 移除對應至伺服器認證的任何現有登入對應。 如需詳細資訊,請參閱認證

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 將傳回下列錯誤訊息:

"Msg 15151, Level 16, State 1, Line 1 "Cannot alter the login '*Domain\Group*', because it does not exist or you do not have permission."

在SQL Database中,驗證連線和伺服器層級防火牆規則所需的登入資料會暫時快取在每個資料庫中。 此快取會定期重新整理。 若要重新整理驗證快取,並確定資料庫擁有登入資料表的最新版本,請執行 DBCC FLUSHAUTHCACHE

權限

需要 ALTER ANY LOGIN 權限。

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

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

  • 重設密碼,但不提供舊密碼。
  • 啟用 MUST_CHANGE、CHECK_POLICY 或 CHECK_EXPIRATION。
  • 變更登入名稱。
  • 啟用或停用登入。
  • 將登入對應到不同的認證。

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

僅具有 sysadmin 權限的 SQL 主體可對 Azure AD 登入執行 ALTER LOGIN 命令。

範例

這些範例也包含使用其他 SQL 產品的範例。 請查看支援上面哪些引數。

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

適用于:SQL Server 2008 和更新版本,以及Azure SQL 受控執行個體。

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 登入密碼變更為已雜湊的值。

適用于:SQL Server 2008 和更新版本,以及Azure SQL 受控執行個體。

ALTER LOGIN TestUser WITH
PASSWORD = 0x01000CF35567C60BFB41EBDE4CF700A985A13D773D6B45B90900 HASHED ;
GO

H. 停用 Azure AD 使用者的登入

下列範例會停用 Azure AD 使用者 joe@contoso.com 的登入。

ALTER LOGIN [joe@contoso.com] DISABLE

另請參閱

* Azure Synapse
分析 *

 

Azure Synapse Analytics

語法

-- Syntax for Azure Synapse

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

<status_option> ::=
    ENABLE | DISABLE

<set_option> ::=
    PASSWORD ='password'
    [
      OLD_PASSWORD ='oldpassword'
    ]
    | NAME = login_name

引數

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

ENABLE | DISABLE 啟用或停用此登入。 停用登入並不會影響已經連接之登入的行為。 (使用 KILL 陳述式來終止現有的連線。)已停用的登入會保留其權限,且依然可以模擬。

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

持續作用中的 SQL Database 連線至少每 10 小時就需要授權 (由「資料庫引擎」執行)。 「資料庫引擎」會嘗試使用最初提交的密碼重新授權,而且不需要使用者輸入。 基於效能考量,當密碼在 SQL Database 中重設時時,不會重新驗證連線,即使連線因為連線共用而重設。 這和內部部署 SQL Server 的行為不同。 如果自從連線初始授權後密碼已經變更,則必須中斷該連線,然後使用新密碼建立新連線。 具有 KILL DATABASE CONNECTION 權限的使用者可以使用 KILL 命令明確地中斷對 SQL Database 的連線。 如需詳細資訊,請參閱 KILL

重要

當登入 (或自主資料庫使用者) 連接並通過驗證時,此連接就會快取有關登入的識別資訊。 若為 Windows 驗證登入,這就包括 Windows 群組中成員資格的相關資訊。 只要維持連接,登入的識別就會維持驗證狀態。 若要強制變更身分識別,例如 Windows 群組成員資格中的密碼重設或變更,登入必須從驗證授權單位登出 (Windows 或SQL Server) ,然後再次登入。 系統管理員 (sysadmin) 固定伺服器角色的成員或任何擁有 ALTER ANY CONNECTION 權限的登入都可以使用 KILL 命令來結束連接並強制登入重新連接。 SQL Server Management Studio可以在開啟多個連線至物件總管和查詢編輯器視窗時重複使用連線資訊。 關閉所有連接以強制重新連接。

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

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

備註

在SQL Database中,驗證連線和伺服器層級防火牆規則所需的登入資料會暫時快取在每個資料庫中。 此快取會定期重新整理。 若要重新整理驗證快取,並確定資料庫擁有登入資料表的最新版本,請執行 DBCC FLUSHAUTHCACHE

權限

需要 ALTER ANY LOGIN 權限。

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

  • 重設密碼,但不提供舊密碼。
  • 變更登入名稱。
  • 啟用或停用登入。
  • 將登入對應到不同的認證。

主體可以變更自己的登入密碼。

範例

這些範例也包含使用其他 SQL 產品的範例。 請查看支援上面哪些引數。

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

適用于:SQL Server 2008 和更新版本。

ALTER LOGIN Mary5
ADD CREDENTIAL EKMProvider1;
GO

F. 解除鎖定登入

若要解除鎖定SQL Server登入,請執行下列語句,並將 *** 取代為所需的帳戶密碼。

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

G. 使用 HASHED 變更登入密碼

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

適用于:SQL Server 2008 和更新版本。

ALTER LOGIN TestUser WITH
PASSWORD = 0x01000CF35567C60BFB41EBDE4CF700A985A13D773D6B45B90900 HASHED ;
GO

另請參閱

* 分析
平臺系統 (PDW) *

 

分析平台系統

語法

-- Syntax for Analytics Platform System

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

<status_option> ::=ENABLE | DISABLE

<set_option> ::=
    PASSWORD ='password'
    [
      OLD_PASSWORD ='oldpassword'
      | <password_option> [<password_option> ]
    ]
    | NAME = login_name
    | CHECK_POLICY = { ON | OFF }
    | CHECK_EXPIRATION = { ON | OFF }

<password_option> ::=
    MUST_CHANGE | UNLOCK

引數

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

ENABLE | DISABLE 啟用或停用此登入。 停用登入並不會影響已經連接之登入的行為。 (使用 KILL 陳述式來終止現有的連線。)已停用的登入會保留其權限,且依然可以模擬。

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

重要

當登入 (或自主資料庫使用者) 連接並通過驗證時,此連接就會快取有關登入的識別資訊。 若為 Windows 驗證登入,這就包括 Windows 群組中成員資格的相關資訊。 只要維持連接,登入的識別就會維持驗證狀態。 若要強制變更身分識別,例如 Windows 群組成員資格中的密碼重設或變更,登入必須從驗證授權單位登出 (Windows 或SQL Server) ,然後再次登入。 系統管理員 (sysadmin) 固定伺服器角色的成員或任何擁有 ALTER ANY CONNECTION 權限的登入都可以使用 KILL 命令來結束連接並強制登入重新連接。 SQL Server Management Studio開啟多個連線至物件總管和查詢編輯器視窗時,可以重複使用連線資訊。 關閉所有連接以強制重新連接。

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

MUST_CHANGE 僅適用于SQL Server登入。 如果包含此選項,SQL Server會在第一次使用變更的登入時提示更新的密碼。

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。

UNLOCK 僅適用于SQL Server登入。 指定應該將鎖定的登入解除鎖定。

備註

當 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 將傳回下列錯誤訊息:

"Msg 15151, Level 16, State 1, Line 1 "Cannot alter the login '*Domain\Group*', because it does not exist or you do not have permission."

在SQL Database中,驗證連線所需的登入資料,並在每個資料庫中暫時快取伺服器層級防火牆規則。 此快取會定期重新整理。 若要重新整理驗證快取,並確定資料庫擁有登入資料表的最新版本,請執行 DBCC FLUSHAUTHCACHE

權限

需要 ALTER ANY LOGIN 權限。

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

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

  • 重設密碼,但不提供舊密碼。
  • 啟用 MUST_CHANGE、CHECK_POLICY 或 CHECK_EXPIRATION。
  • 變更登入名稱。
  • 啟用或停用登入。
  • 將登入對應到不同的認證。

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

範例

這些範例也包含使用其他 SQL 產品的範例。 請查看支援上面哪些引數。

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

適用于:SQL Server 2008 和更新版本。

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 登入密碼變更為已雜湊的值。

適用于:SQL Server 2008 和更新版本。

ALTER LOGIN TestUser WITH
PASSWORD = 0x01000CF35567C60BFB41EBDE4CF700A985A13D773D6B45B90900 HASHED ;
GO

另請參閱