ALTER USER (Transact-SQL)
重新命名資料庫使用者或變更其預設結構描述。
語法
ALTER USER user_name
WITH <set_item> [ ,...n ]
<set_item> ::=
NAME = new_user_name
| DEFAULT_SCHEMA = schema_name
| LOGIN = login_name
引數
- user_name
指定在這個資料庫內用來識別使用者的名稱。
- LOGIN **=**login_name
將使用者重新對應至另一個登入,其作法是變更使用者的安全性識別碼 (SID) 以符合登入的 SID。
- NAME **=**new_user_name
指定新的名稱給這位使用者。new_user_name 不能已存在於目前資料庫中。
- DEFAULT_SCHEMA **=**schema_name
指定當伺服器解析這位使用者的物件名稱時,將搜尋的第一個結構描述。
備註
如果 DEFAULT_SCHEMA 未定義,使用者將以 dbo 作為它的預設結構描述。DEFAULT_SCHEMA 可設為目前不存在於資料庫中的結構描述。因此,您可以在建立該結構描述之前,先將 DEFAULT_SCHEMA 指派給使用者。DEFAULT_SCHEMA 不能指定給對應至 Windows 群組、憑證或非對稱金鑰的使用者。
重要事項: |
---|
如果使用者是系統管理員 (sysadmin) 固定伺服器角色的成員,則會忽略 DEFAULT_SCHEMA 的值。系統管理員 (sysadmin) 固定伺服器角色的所有成員都有預設的 dbo 結構描述。 |
當新使用者名稱的 SID 符合資料庫所記錄的 SID 時,您只能變更對應至 Windows 登入或群組的使用者名稱。這項檢查可防止資料庫中詐騙的 Windows 登入。
WITH LOGIN 子句允許將使用者重新對應至不同登入。但是無法透過這個子句來重新對應不具登入的使用者、對應至憑證的使用者或對應至非對稱金鑰的使用者。只能重新對應 SQL Server 使用者和 Windows 使用者 (或群組)。WITH LOGIN 子句也無法用來變更使用者類型,例如將 Windows 帳戶變更為 登入。
如果使用者是 Windows 使用者、其名稱屬於 Windows 名稱 (包含反斜線),或未曾指定新名稱給使用者且其目前名稱不同於登入名稱,則使用者的名稱將會自動重新命名為登入名稱。否則,就不會重新命名使用者 (除非呼叫者另外叫用 NAME 子句)。
附註: |
---|
具有 ALTER ANY USER 權限的使用者可以變更任何使用者的預設結構描述。結構描述變更過的使用者可能會在不知情的情況下,從錯誤的資料表選取資料或從錯誤的結構描述執行程式碼。 |
對應至 SQL Server 登入、憑證或非對稱金鑰的使用者名稱不可包含反斜線字元 (\)。
注意: |
---|
在 SQL Server 2005 中,結構描述的行為已經與舊版 SQL Server 中的行為不同。假設結構描述相當於資料庫使用者的程式碼可能不會傳回正確的結果。曾經使用下列任何一個 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 權限。使用者可變更自己的預設結構描述。
必須有資料庫的 CONTROL 權限,才能將使用者重新對應至登入。
範例
A. 變更資料庫使用者的名稱
下列範例會將資料庫使用者名稱 Mary5
變更為 Mary51
。
USE AdventureWorks;
ALTER USER Mary5 WITH NAME = Mary51;
GO
B. 變更使用者的預設結構描述
下列範例會將使用者 Mary51
的預設結構描述變更為 Purchasing
。
USE AdventureWorks;
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO
請參閱
參考
CREATE USER (Transact-SQL)
DROP USER (Transact-SQL)
EVENTDATA (Transact-SQL)