ALTER AUTHORIZATION (Transact-SQL)
變更安全性實體的擁有權。
語法
ALTER AUTHORIZATION
ON [ <class_type>:: ] entity_name
TO { SCHEMA OWNER | principal_name }
[;]
<class_type> ::=
{
OBJECT | ASSEMBLY | ASYMMETRIC KEY | CERTIFICATE
| CONTRACT | TYPE | DATABASE | ENDPOINT | FULLTEXT CATALOG
| FULLTEXT STOPLIST | MESSAGE TYPE | REMOTE SERVICE BINDING
| ROLE | ROUTE | SCHEMA | SEARCH PROPERTY LIST | SERVER ROLE
| SERVICE | SYMMETRIC KEY | XML SCHEMA COLLECTION
}
引數
<class_type>
這是變更擁有者之實體的安全性實體類別。 OBJECT 是預設值。entity_name
這是實體的名稱。principal_name
這是擁有實體的主體名稱。
備註
ALTER AUTHORIZATION 可用來變更具有擁有者之任何實體的擁有權。 資料庫包含的實體擁有權可傳送給任何資料庫層級主體。 伺服器層級實體的擁有權只能傳送給伺服器層級主體。
重要事項 |
---|
從 SQL Server 2005 開始,使用者可以擁有其他資料庫使用者所擁有之結構描述內含的 OBJECT 或 TYPE。 這是和舊版 SQL Server 不同的一項行為變更。 如需詳細資訊,請參閱 OBJECTPROPERTY (Transact-SQL) 和 TYPEPROPERTY (Transact-SQL)。 |
下列「物件」類型之結構描述所包含實體的擁有權可以傳送:資料表、檢視、函數、程序、佇列和同義字。
下列實體的擁有權無法傳送:連結伺服器、統計資料、條件約束、規則、預設值、觸發程序、Service Broker 佇列、認證、資料分割函數、資料分割結構描述、資料庫主要金鑰、服務主要金鑰和事件通知。
下列安全性實體類別之成員的擁有權無法傳送:伺服器、登入、使用者、應用程式角色和資料行。
當您傳送結構描述包含之實體的擁有權時,SCHEMA OWNER 選項才有效。 SCHEMA OWNER 會將實體的擁有權傳送給其所在之結構描述的擁有者。 只有 OBJECT、TYPE 或 XML SCHEMA COLLECTION 類別的實體才會包含結構描述。
如果目標實體不是資料庫,且實體要傳送給新的擁有者,則會卸除目標的所有權限。
注意 |
---|
在 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)>。 |
同時應注意下列項目:
重要事項 |
---|
尋找物件擁有者的唯一可靠方式就是查詢 sys.objects 目錄檢視。 尋找類型之擁有者的唯一可靠方式就是使用 TYPEPROPERTY 函數。 |
特殊案例和條件
下表列出特殊案例、例外狀況和條件,這些都適用於改變授權。
類別 |
條件 |
---|---|
DATABASE |
無法變更系統資料庫 master、model、tempdb、資源資料庫,或做為散發資料庫之資料庫的擁有者。 主體必須是登入。 如果主體是 Windows 登入,而沒有相對應的 SQL Server 登入,則該主體必須有資料庫的 CONTROL SERVER 權限和 TAKE OWNERSHIP 權限。 如果主體是 SQL Server 登入,則該主體不得對應到憑證或非對稱金鑰。 相依別名將對應到新的資料庫擁有者。 DBO SID 將同時在目前資料庫和 sys.databases 中更新。 |
OBJECT |
無法變更觸發程序、條件約束、規則、預設值、統計資料、系統物件、佇列、索引檢視或具有索引檢視之資料表的擁有權。 |
SCHEMA |
當傳送擁有權時,將卸除沒有明確擁有者之結構描述所包含物件的權限。 無法變更 sys、dbo 或 information_schema 的擁有者。 |
TYPE |
無法變更屬於 sys 或 information_schema 之 TYPE 的擁有權。 |
CONTRACT、MESSAGE TYPE 或 SERVICE |
無法變更系統實體的擁有權。 |
SYMMETRIC KEY |
無法變更全域暫時金鑰的擁有權。 |
CERTIFICATE 或 ASYMMETRIC KEY |
無法將這些實體的擁有權傳送給角色或群組。 |
ENDPOINT |
主體必須是登入。 |
權限
需要實體的 TAKE OWNERSHIP 權限。 如果新擁有者不是執行這個陳述式的使用者,而且需要 1) 新擁有者的 IMPERSONATE 權限 (如果它是使用者或登入的話);或 2) 如果新擁有者是角色,則需要角色中的成員資格,或角色的 ALTER 權限;或 3) 如果新擁有者是應用程式角色,則需要應用程式角色的 ALTER 權限。
範例
A.轉移資料表的擁有權
下列範例會將資料表 Sprockets 的擁有權轉移給使用者 MichikoOsada。 此資料表位於結構描述 Parts 內。
ALTER AUTHORIZATION ON OBJECT::Parts.Sprockets TO MichikoOsada;
GO
這項查詢也會如下所示:
ALTER AUTHORIZATION ON Parts.Sprockets TO MichikoOsada;
GO
B.將檢視的擁有權轉移給結構描述擁有者
下列範例會將 ProductionView06 檢視的擁有權轉移給包含其結構描述的擁有者。 此檢視位於結構描述 Production 內。
ALTER AUTHORIZATION ON OBJECT::Production.ProductionView06 TO SCHEMA OWNER;
GO
C.將結構描述的擁有權轉移給使用者
下列範例會將 SeattleProduction11 結構描述的擁有權轉移給使用者 SandraAlayo。
ALTER AUTHORIZATION ON SCHEMA::SeattleProduction11 TO SandraAlayo;
GO
D.將端點的擁有權轉移給 SQL Server 登入
下列範例會將 CantabSalesServer1 端點的擁有權轉移給 JaePak。 因為端點是伺服器層級安全性實體,所以端點只能傳送給伺服器層級主體。
ALTER AUTHORIZATION ON ENDPOINT::CantabSalesServer1 TO JaePak;
GO