[!INCLUDE [sql-asdb-asdbmi-asa-pdw-fabricse-fabricdw-fabricsqldb(../../includes/applies-to-version/sql-asdb-asdbmi-asa-pdw-fabricse-fabricdw-fabricsqldb.md)]
在目前資料庫中建立結構描述。
CREATE SCHEMA交易也可以在新的結構描述內建立資料表和檢視,並在這些物件上設定 GRANT、 DENY或REVOKE權限。
語法
Microsoft Fabric 中 SQL Server、Azure SQL Database 和 SQL Database 的語法。
CREATE SCHEMA schema_name_clause [ <schema_element> [ ...n ] ]
<schema_name_clause> ::=
{
schema_name
| AUTHORIZATION owner_name
| schema_name AUTHORIZATION owner_name
}
<schema_element> ::=
{
table_definition | view_definition | grant_statement |
revoke_statement | deny_statement
}
Azure Synapse Analytics 和平行資料倉儲的語法。
CREATE SCHEMA schema_name [ AUTHORIZATION owner_name ] [;]
引數
schema_name
指定資料庫內結構描述的名稱。
授權 owner_name
指定將擁有結構描述之資料庫層級主體的名稱。 此主體可能擁有其他結構描述,而且可能不會使用目前的結構描述作為其預設結構描述。
table_definition
指定在 CREATE TABLE 結構描述內建立資料表的陳述式。 執行此陳述式的主體必須具有 CREATE TABLE 目前資料庫的權限。
view_definition
指定在 CREATE VIEW 綱目內建立檢視的陳述式。 執行此陳述式的主體必須具有 CREATE VIEW 目前資料庫的權限。
grant_statement
指定陳述 GRANT 式,以授與任何安全性實體的許可權,但新結構描述除外。
revoke_statement
指定陳述 REVOKE 式,以撤銷除新結構描述以外的任何安全性實體的許可權。
deny_statement
指定拒絕 DENY 任何安全性實體許可權的陳述式,但新結構描述除外。
備註
包含 CREATE SCHEMA AUTHORIZATION但未指定名稱的陳述式只允許回溯相容性。 陳述式不會造成錯誤,但不會建立結構描述。
CREATE SCHEMA 可以在單一陳述式中建立結構描述、其中包含的資料表和檢視,以及 GRANT、 REVOKE或 DENY 任何安全性實體的許可權。 您必須將此陳述式作為單獨的批次執行。 陳述式所 CREATE SCHEMA 建立的物件會在您建立的綱目內建立。
CREATE SCHEMA 交易是不可部分完成的。 如果在陳述式執行 CREATE SCHEMA 期間發生任何錯誤,則不會建立任何指定的安全性實體,而且不會授與任何許可權。
您可以以任何順序列出要建立 CREATE SCHEMA 的安全性實體,但參考其他檢視的檢視除外。 在這個情況下,被參考的檢視必須建立於參考它的檢視之前。
因此, GRANT 陳述式可以在建立物件本身之前授與物件的許可權,或者 CREATE VIEW 陳述式可以出現在建立檢視所參照資料表的陳述式之前 CREATE TABLE 。 此外, CREATE TABLE 陳述式可以宣告對稍後在陳述式中 CREATE SCHEMA 定義的表格的外部索引鍵。
注意
DENY 並 REVOKE 支援內部 CREATE SCHEMA 陳述式。
DENY 和 REVOKE 子句按照它們在語句中 CREATE SCHEMA 出現的順序執行。
執行 CREATE SCHEMA 的主體可以指定另一個資料庫主體作為所建立結構描述的擁有者。 此動作需要額外的許可權,如本文稍後的 許可權 一節所述。
新結構描述的擁有者是下列資料庫層級主體之一:資料庫使用者、資料庫角色或應用程式角色。 在綱目內建立的物件由綱目擁有者擁有,且 中principal_id具有 Null sys.objects 。 您可以將包含結構描述的物件擁有權轉移至任何資料庫層級主體,但結構描述擁有者一律會保留 CONTROL 結構描述內物件的權限。
注意
架構不等於資料庫使用者。 使用 系統目錄檢視 來識別資料庫用戶與架構之間的任何差異。
隱含結構描述和使用者建立
注意
Microsoft Entra ID 先前稱為 Azure Active Directory (Azure AD)。
在某些情況下,使用者可以使用資料庫,而不需要資料庫使用者帳戶 (資料庫中的資料庫主體)。 這種情況可能發生在以下情況下:
登入具有
CONTROL SERVER權限。Windows 使用者沒有個別資料庫使用者帳戶 (資料庫中的資料庫主體),但會以具有資料庫使用者帳戶 (Windows 群組的資料庫主體) 的 Windows 群組成員身分存取資料庫。
Microsoft Entra 使用者沒有個別資料庫使用者帳戶 (資料庫中的資料庫主體),但會以具有資料庫使用者帳戶 (Microsoft Entra 群組的資料庫主體) 的 Microsoft Entra 群組成員身分存取資料庫。
當沒有資料庫使用者帳戶的使用者建立物件而不指定現有的結構描述時,資料庫中會自動為該使用者建立資料庫主體和預設結構描述。 建立的資料庫主體和結構描述的名稱與使用者連線到 SQL Server 時使用的名稱 (SQL Server 驗證登入名稱或 Windows 使用者名稱) 相同。
必須有這個行為,才能允許基於 Windows 群組的使用者建立和擁有物件。 不過,它可能會導致無意中建立結構描述和使用者。 為了避免隱含建立使用者和結構描述,請盡可能地明確建立資料庫主體並指派預設結構描述。 或者當在資料庫中建立物件時,使用二或三部份的物件名稱,明確指定現有的結構描述。
無法在 SQL Database 上隱含建立 Microsoft Entra 使用者。 由於從外部提供者建立 Microsoft Entra 使用者必須檢查 Microsoft Entra ID 中的使用者狀態,因此建立使用者會失敗,並出現錯誤 2760: The specified schema name "<user@domain>" either does not exist or you do not have permission to use it. 然後錯誤 2759: CREATE SCHEMA failed due to previous errors.
嘗試建立或變更結構描述會導致錯誤 15151:, Cannot find the user '', because it does not exist or you do not have permission.後面接著錯誤 2759。 若要解決這些錯誤,請從外部提供者建立 Microsoft Entra 使用者,或改變 Microsoft Entra 群組來指派預設架構。 然後重新執行建立 對象的語句。
在 Microsoft Fabric 中的 SQL 分析端點和倉儲中,架構名稱不能包含 / 或 \ 結尾為 .。
淘汰通知
CREATE SCHEMA 目前支援未指定結構描述名稱的陳述式,以實現回溯相容性。 這些陳述式實際上不會在資料庫中建立結構描述,但它們會建立資料表和檢視,並授與許可權。 主體不需要 CREATE SCHEMA 執行此先前形式的 CREATE SCHEMA的許可權,因為未建立任何結構描述。 未來的 SQL Server 版本將移除這項功能。
權限
需要 CREATE SCHEMA 資料庫的權限。
若要建立陳述式內 CREATE SCHEMA 指定的物件,使用者必須具有對應 CREATE 的權限。
若要將另一個使用者指定為所建立結構描述的擁有者,呼叫端必須具有 IMPERSONATE 該使用者的許可權。 如果資料庫角色指定為擁有者,呼叫端必須具有下列其中一項:角色的成員資格或 ALTER 角色的許可權。
對於回溯相容的語法,不會檢查任何許可權 CREATE SCHEMA ,因為未建立任何結構描述。
Fabric Data Warehouse 中的權限
在 Fabric Data Warehouse 中,除了許可權之外 CREATE SCHEMA ,使用者還必須是系統管理員、成員或參與者工作 區角色的成員。
範例
A。 建立結構描述並授與許可權
下列範例會建立結構描述 Sprockets,這是由包含資料表 Annik 的 NineProngs 所擁有。 陳述式授與 SELECT 給 Mandar,拒絕 SELECT 給 Prasanna。
Sprockets ,並在 NineProngs 單一陳述式中建立。
USE AdventureWorks2022;
GO
CREATE SCHEMA Sprockets AUTHORIZATION Annik
CREATE TABLE NineProngs
(
source INT,
cost INT,
partnumber INT
)
GRANT SELECT ON SCHEMA::Sprockets TO Mandar
DENY SELECT ON SCHEMA::Sprockets TO Prasanna;
GO
範例:Azure Synapse Analytics 和 Analytics Platform System (PDW)
B. 在結構描述中建立結構描述和表格
下例範例會建立名為 Sales 的結構描述,然後在該結構描述中建立 Sales.Region 資料表。
CREATE SCHEMA Sales;
GO
CREATE TABLE Sales.Region
(
Region_id INT NOT NULL,
Region_Name CHAR (5) NOT NULL
)
WITH (DISTRIBUTION = REPLICATE);
GO
C. 設定結構描述的擁有者
下列範例會建立結構 Production 描述,並設定 Mary 為擁有者。
CREATE SCHEMA Production AUTHORIZATION [Contoso\Mary];
GO