ALTER USER (Transact-SQL)

重新命名資料庫使用者或變更其預設結構描述。

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

語法

ALTER USER userName  
     WITH <set_item> [ ,...n ]

<set_item> ::= 
      NAME = newUserName 
    | DEFAULT_SCHEMA = { schemaName | NULL }
    | LOGIN = loginName
    | PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
    | DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }

引數

  • userName
    指定在這個資料庫內用來識別使用者的名稱。

  • LOGIN **=**loginName
    變更使用者的安全性識別碼 (SID) 使其符合登入的 SID,以便將使用者重新對應到另一個登入。

  • NAME **=**newUserName
    指定新的名稱給這位使用者。 newUserName 不能已存在於目前資料庫中。

  • DEFAULT_SCHEMA = { schemaName | NULL }
    指定當伺服器解析這位使用者的物件名稱時,將搜尋的第一個結構描述。 當預設結構描述設為 NULL 時,會從 Windows 群組移除預設結構描述。 NULL 選項不可用於 Windows 使用者。

  • PASSWORD = 'password'
    指定正在變更之使用者的密碼。 密碼會區分大小寫。

    [!附註]

    只有包含的使用者能夠使用此選項。 如需詳細資訊,請參閱<自主資料庫>和<sp_migrate_user_to_contained (Transact-SQL)>。

  • OLD_PASSWORD ='oldpassword'
    目前的使用者密碼,將由 'password' 取代。 密碼會區分大小寫。 除非您有 ALTER ANY USER 權限,否則需要 OLD_PASSWORD 才能變更密碼。 需要 OLD_PASSWORD 可防止具有 IMPERSONATION 權限的使用者變更密碼。

    [!附註]

    只有包含的使用者能夠使用此選項。

  • DEFAULT_LANGUAGE ={ NONE | <lcid> | <language name> | <language alias> }
    指定要指派給使用者的預設語言。 如果這個選項設為 NONE,預設語言將設為資料庫的目前預設語言。 如果稍後變更了資料庫的預設語言,使用者的預設語言會保持不變。 DEFAULT_LANGUAGE 可以是本機識別碼 (lcid)、語言名稱或語言別名。

    [!附註]

    這個選項只能指定在自主資料庫中,而且只適用於包含的使用者。

備註

預設結構描述是伺服器在解析這個資料庫使用者之物件名稱時,所搜尋到的第一個結構描述。 除非另有指定,否則預設結構描述是此資料庫使用者建立之物件的擁有者。

如果使用者有預設結構描述,則使用預設結構描述。 如果使用者沒有預設結構描述,但使用者是有預設結構描述之群組的成員,則使用群組的預設結構描述。 如果使用者沒有預設結構描述,而且是有一個以上之群組的成員,使用者的預設結構描述將會是具有最低 principle_id 且明確設定預設結構描述之 Windows 群組的結構描述。 如果無法判斷使用者的預設結構描述,將使用 dbo 結構描述。

DEFAULT_SCHEMA 可設為目前不存在於資料庫中的結構描述。 因此,您可以在建立該結構描述之前,先將 DEFAULT_SCHEMA 指派給使用者。

DEFAULT_SCHEMA 不能指定給對應至憑證或非對稱金鑰的使用者。

重要事項重要事項

如果使用者是系統管理員 (sysadmin) 固定伺服器角色的成員,則會忽略 DEFAULT_SCHEMA 的值。 系統管理員 (sysadmin) 固定伺服器角色的所有成員都有預設的 dbo 結構描述。

當新使用者名稱的 SID 符合資料庫所記錄的 SID 時,您可以變更對應至 Windows 登入或群組的使用者名稱。 這項檢查可防止資料庫中詐騙的 Windows 登入。

WITH LOGIN 子句可讓使用者重新對應到另一個登入。 沒有登入的使用者、對應至憑證的使用者或是對應至非對稱金鑰的使用者,都無法使用這個子句來重新對應。 只有 SQL 使用者和 Windows 使用者 (或群組) 才能重新對應。 WITH LOGIN 子句無法用來變更使用者的類型,例如將 Windows 帳戶變更為 SQL Server 登入。

如果下列條件成立,使用者的名稱將會自動重新命名為登入名稱。

  • 使用者是 Windows 使用者。

  • 名稱是 Windows 名稱 (包含反斜線)。

  • 沒有指定任何新的名稱。

  • 目前的名稱不同於登入名稱。

否則,除非呼叫端額外叫用 NAME 子句,否則使用者將不會重新命名。

對應至 SQL Server 登入、憑證或非對稱金鑰的使用者名稱不可包含反斜線字元 (\)。

警告注意事項注意

從 SQL Server 2005 開始,結構描述的行為已經變更。結果是,假設結構描述相當於資料庫使用者的程式碼可能不會傳回正確的結果。不應該在曾經使用下列任何一個 DDL 陳述式的資料庫中使用舊的目錄檢視 (包括 sysobjects):CREATE SCHEMA、ALTER SCHEMA、DROP SCHEMA、CREATE USER、ALTER USER、DROP USER、CREATE ROLE、ALTER ROLE、DROP ROLE、CREATE APPROLE、ALTER APPROLE、DROP APPROLE、ALTER AUTHORIZATION。在此類資料庫中,必須改用新的目錄檢視。新的目錄檢視會考量 SQL Server 2005 中所導入的主體和結構描述的分隔。如需目錄檢視的詳細資訊,請參閱<目錄檢視 (Transact-SQL)>。

安全性

[!附註]

具有 ALTER ANY USER 權限的使用者可以變更任何使用者的預設結構描述。 結構描述變更過的使用者可能會在不知情的情況下,從錯誤的資料表選取資料或從錯誤的結構描述執行程式碼。

權限

若要變更使用者的名稱,需要 ALTER ANY USER 權限。

若要變更擁有資料庫 CONTROL 權限之使用者的使用者名稱、目標登入或 SID,則需要資料庫的 CONTROL 權限。

若要變更預設結構描述或語言,需要使用者的 ALTER 權限。 使用者只能變更他們自己的預設結構描述或語言。

範例

A.變更資料庫使用者的名稱

下列範例會將資料庫使用者名稱 Mary5 變更為 Mary51。

USE AdventureWorks2012;
ALTER USER Mary5 WITH NAME = Mary51;
GO

B.變更使用者的預設結構描述

下列範例會將使用者 Mary51 的預設結構描述變更為 Purchasing。

USE AdventureWorks2012;
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

C.一次變更數個選項

下列範例會在一個陳述式中變更自主資料庫使用者的數個選項。

USE AdventureWorks2012;
GO 
ALTER USER Philip 
WITH  NAME = Philipe 
    , DEFAULT_SCHEMA = Development 
    , PASSWORD = 'W1r77TT98%ab@#’ OLD_PASSWORD = 'New Devel0per' 
    , DEFAULT_LANGUAGE  = French ;
GO

請參閱

參考

CREATE USER (Transact-SQL)

DROP USER (Transact-SQL)

EVENTDATA (Transact-SQL)

sp_migrate_user_to_contained (Transact-SQL)

概念

自主資料庫