Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
[! INCLUDE [sql-asdb-asdbmi-asa-pdw-fabricse-fabricdw-fabricsqldb(.). /.. /includes/applies-to-version/sql-asdb-asdbmi-asa-pdw-fabricse-fabricdw-fabricsqldb.md)]
Erstellt ein Schema in der aktuellen Datenbank. Die CREATE SCHEMA Transaktion kann auch Tabellen und Ansichten innerhalb des neuen Schemas erstellen und Berechtigungen für diese Objekte festlegenGRANTDENY.REVOKE
Transact-SQL-Syntaxkonventionen
Syntax
Syntax für SQL Server, Azure SQL-Datenbank und SQL-Datenbank in Microsoft Fabric.
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
}
Syntax für Azure Synapse Analytics und Parallel Data Warehouse.
CREATE SCHEMA schema_name [ AUTHORIZATION owner_name ] [;]
Argumente
schema_name
Gibt den Namen des Schemas innerhalb der Datenbank an.
AUTORISIERUNGs-owner_name
Gibt den Namen des Prinzipals auf Datenbankebene an, der der Besitzer des Schemas ist. Dieser Prinzipal besitzt möglicherweise andere Schemas und verwendet möglicherweise das aktuelle Schema nicht als Standardschema.
table_definition
Gibt eine CREATE TABLE Anweisung an, die eine Tabelle innerhalb des Schemas erstellt. Der Prinzipal, der diese Anweisung ausführt, muss über die Berechtigung für die aktuelle Datenbank verfügen CREATE TABLE .
view_definition
Gibt eine CREATE VIEW Anweisung an, die eine Ansicht innerhalb des Schemas erstellt. Der Prinzipal, der diese Anweisung ausführt, muss über die Berechtigung für die aktuelle Datenbank verfügen CREATE VIEW .
grant_statement
Gibt eine GRANT Anweisung an, die Berechtigungen für alle sicherungsfähigen Außer für das neue Schema gewährt.
revoke_statement
Gibt eine REVOKE Anweisung an, die Berechtigungen für alle sicherungsfähigen Elemente außer dem neuen Schema widerruft.
deny_statement
Gibt eine DENY Anweisung an, die Berechtigungen für alle sicherungsfähigen Elemente außer dem neuen Schema verweigert.
Bemerkungen
Anweisungen, die einen Namen enthalten CREATE SCHEMA AUTHORIZATION, aber keinen Namen angeben, sind nur aus Gründen der Abwärtskompatibilität zulässig. Die Anweisung verursacht keinen Fehler, erstellt aber kein Schema.
CREATE SCHEMAkann ein Schema, die darin enthaltenen Tabellen und Ansichten sowie GRANTREVOKEberechtigungen DENY für alle sicherungsfähigen Elemente in einer einzelnen Anweisung erstellen. Sie müssen diese Anweisung als separaten Batch ausführen. Von der CREATE SCHEMA Anweisung erstellte Objekte werden innerhalb des von Ihnen erstellten Schemas erstellt.
CREATE SCHEMA Transaktionen sind atom. Wenn während der Ausführung einer CREATE SCHEMA Anweisung ein Fehler auftritt, werden keine der angegebenen sicherungsfähigen Elemente erstellt, und es werden keine Berechtigungen erteilt.
Sie können sicherungsfähige Elemente auflisten, die in CREATE SCHEMA beliebiger Reihenfolge erstellt werden sollen, mit Ausnahme von Ansichten, die auf andere Ansichten verweisen. In diesem Fall muss die Sicht, auf die verwiesen wird, vor der verweisenden Sicht erstellt werden.
Daher kann eine GRANT Anweisung berechtigungen für ein Objekt erteilen, bevor das Objekt selbst erstellt wird, oder eine CREATE VIEW Anweisung kann vor den CREATE TABLE Anweisungen angezeigt werden, die von der Ansicht referenziert werden. Außerdem können Anweisungen Fremdschlüssel für Tabellen deklarieren, CREATE TABLE die später in der CREATE SCHEMA Anweisung definiert werden.
Hinweis
DENY und REVOKE werden in CREATE SCHEMA Anweisungen unterstützt.
DENY und REVOKE Klauseln werden in der Reihenfolge ausgeführt, in der sie in der CREATE SCHEMA Anweisung angezeigt werden.
Der ausgeführte Prinzipal kann einen anderen Datenbankprinzipal als Besitzer des zu erstellenden Schemas CREATE SCHEMA angeben. Diese Aktion erfordert zusätzliche Berechtigungen, wie weiter unten in diesem Artikel im Abschnitt "Berechtigungen" beschrieben.
Das neue Schema ist im Besitz einer der folgenden Prinzipale auf Datenbankebene: Datenbankbenutzer, Datenbankrolle oder Anwendungsrolle. Objekte, die innerhalb eines Schemas erstellt werden, gehören dem Besitzer des Schemas und haben einen Nullwert principal_id in sys.objects. Sie können den Besitz von schemabasierten Objekten an einen beliebigen Prinzipal auf Datenbankebene übertragen, der Schemabesitzer behält jedoch immer die Berechtigung für Objekte innerhalb des Schemas CONTROL bei.
Hinweis
Schemas entsprechen nicht datenbankbenutzern. Verwenden Sie Systemkatalogansichten , um unterschiede zwischen Datenbankbenutzern und Schemas zu identifizieren.
Implizites Schema und Benutzererstellung
Hinweis
Microsoft Entra ID war zuvor als Azure Active Directory (Azure AD) bekannt.
In einigen Fällen kann ein Benutzer eine Datenbank verwenden, ohne über ein Datenbankbenutzerkonto (ein Datenbankprinzipal in der Datenbank) verfügen zu müssen. Diese Bedingung kann in den folgenden Situationen auftreten:
Eine Anmeldung verfügt über
CONTROL SERVERBerechtigungen.Ein Windows-Benutzer verfügt nicht über ein einzelnes Datenbankbenutzerkonto (ein Datenbankprinzipal in der Datenbank), greift jedoch auf eine Datenbank als Mitglied einer Windows-Gruppe zu, die über ein Datenbankbenutzerkonto verfügt (ein Datenbankprinzipal für die Windows-Gruppe).
Ein Microsoft Entra-Benutzer verfügt nicht über ein einzelnes Datenbankbenutzerkonto (ein Datenbankprinzipal in der Datenbank), greift aber auf eine Datenbank als Mitglied einer Microsoft Entra-Gruppe zu, die über ein Datenbankbenutzerkonto verfügt (ein Datenbankprinzipal für die Microsoft Entra-Gruppe).
Wenn ein Benutzer ohne Datenbankbenutzerkonto ein Objekt ohne Angabe eines vorhandenen Schemas erstellt, werden automatisch ein Datenbankprinzipal und ein Standardschema in der Datenbank für diesen Benutzer erstellt. Der erstellte Datenbankprinzipal und das Schema haben denselben Namen wie der Name, den der Benutzer beim Herstellen einer Verbindung mit SQL Server verwendet hat (der Anmeldename der SQL Server-Authentifizierung oder der Windows-Benutzername).
Dieses Verhalten ist erforderlich, damit auf Windows-Gruppen basierende Benutzer Objekte erstellen und besitzen können. Dies kann jedoch zur unbeabsichtigten Erstellung von Schemas und Benutzern führen. Um das implizite Erstellen von Benutzern und Schemata tu vermeiden, sollten Sie soweit möglich Datenbankprinzipale explizit erstellen und ein Standardschema zuweisen. Oder geben Sie bei der Erstellung von Objekten in einer Datenbank explizit ein vorhandenes Schema anhand von zwei- oder dreiteiligen Objektnamen an.
Die implizite Erstellung eines Microsoft Entra-Benutzers ist in sql-Datenbank nicht möglich. Da das Erstellen eines Microsoft Entra-Benutzers von einem externen Anbieter den Status des Benutzers in der Microsoft Entra-ID überprüfen muss, schlägt die Erstellung des Benutzers mit Fehler 2760 fehl: The specified schema name "<user@domain>" either does not exist or you do not have permission to use it. Und dann Fehler 2759: CREATE SCHEMA failed due to previous errors.
Versuche zum Erstellen oder Ändern von Schemas führen zu dem Fehler 15151: Cannot find the user '', because it does not exist or you do not have permission., gefolgt von Fehler 2759. Um diese Fehler zu umgehen, erstellen Sie entweder den Microsoft Entra-Benutzer von einem externen Anbieter, oder ändern Sie die Microsoft Entra-Gruppe, um ein Standardschema zuzuweisen. Führen Sie dann die Anweisung zum Erstellen des Objekts erneut aus.
In SQL-Analyseendpunkt und Warehouse in Microsoft Fabric können Schemanamen keine oder /\ enden mit einem ..
Hinweis zur Einstellung
CREATE SCHEMA Anweisungen, die keinen Schemanamen angeben, werden zurzeit aus Gründen der Abwärtskompatibilität unterstützt. Diese Anweisungen erstellen kein Schema in der Datenbank, aber sie erstellen Tabellen und Ansichten und erteilen Berechtigungen. Prinzipale benötigen CREATE SCHEMA keine Berechtigung zum Ausführen dieser früheren Form von CREATE SCHEMA, da kein Schema erstellt wird. Diese Funktionalität wird in zukünftigen Versionen von SQL Server nicht mehr bereitgestellt.
Berechtigungen
Erfordert die CREATE SCHEMA-Berechtigung für die Datenbank.
Um ein in der CREATE SCHEMA Anweisung angegebenes Objekt zu erstellen, muss der Benutzer über die entsprechende CREATE Berechtigung verfügen.
Um einen anderen Benutzer als Besitzer des zu erstellenden Schemas anzugeben, muss der Aufrufer über die Berechtigung für diesen Benutzer verfügen IMPERSONATE . Wenn eine Datenbankrolle als Besitzer angegeben wird, muss der Aufrufer über eine der folgenden Elemente verfügen: Mitgliedschaft in der Rolle oder ALTER Berechtigung für die Rolle.
Für die abwärtskompatible Syntax werden keine Berechtigungen CREATE SCHEMA überprüft, da kein Schema erstellt wird.
Berechtigungen in Fabric Data Warehouse
Zusätzlich zur CREATE SCHEMA Berechtigung in Fabric Data Warehouse muss der Benutzer Mitglied der Arbeitsbereichsrolle "Administrator", "Mitglied" oder "Mitwirkender" sein.
Beispiele
Ein. Erstellen eines Schemas und Erteilen von Berechtigungen
Das folgende Beispiel erstellt das Sprockets-Schema, das im Besitz von Annik ist und die NineProngs-Tabelle enthält. Die Anweisung erteilt die SELECT-Berechtigung für Mandar und verweigert die SELECT-Berechtigung für Prasanna.
Sprockets und NineProngs werden in einer einzelnen Anweisung erstellt.
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
Beispiele: Azure Synapse Analytics und Analytics-Plattformsystem (PDW)
B. Erstellen eines Schemas und einer Tabelle im Schema
Im folgenden Beispiel wird das Schema Sales erstellt, und anschließend in diesem Schema die Tabelle 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. Festlegen des Besitzers eines Schemas
Im folgenden Beispiel wird ein Production Schema erstellt und als Besitzer festgelegt Mary .
CREATE SCHEMA Production AUTHORIZATION [Contoso\Mary];
GO