Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
[! INCLUDE [sql-asdb-asdbmi-asa-pdw-fabricse-fabricdw-fabricsqldb(.. /.. /includes/applies-to-version/sql-asdb-asdbmi-asa-pdw-fabricse-fabricdw-fabricsqldb.md)]
Skapar ett schema i den aktuella databasen. Transaktionen CREATE SCHEMA kan också skapa tabeller och vyer i det nya schemat och ange GRANT, DENYeller REVOKE behörigheter för dessa objekt.
Transact-SQL syntaxkonventioner
Syntax
Syntax för SQL Server, Azure SQL Database och SQL Database i 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 och Parallel Data Warehouse.
CREATE SCHEMA schema_name [ AUTHORIZATION owner_name ] [;]
Argumentpunkter
schema_name
Anger namnet på schemat i databasen.
AUKTORISERING owner_name
Anger namnet på det huvudnamn på databasnivå som ska äga schemat. Det här huvudkontot kanske äger andra scheman och kanske inte använder det aktuella schemat som standardschema.
table_definition
Anger en CREATE TABLE instruktion som skapar en tabell i schemat. Huvudnamnet som kör den här instruktionen måste ha CREATE TABLE behörighet för den aktuella databasen.
view_definition
Anger en CREATE VIEW instruktion som skapar en vy i schemat. Huvudnamnet som kör den här instruktionen måste ha CREATE VIEW behörighet för den aktuella databasen.
grant_statement
Anger en GRANT instruktion som ger behörigheter för alla skyddsbara filer förutom det nya schemat.
revoke_statement
Anger en REVOKE instruktion som återkallar behörigheter för alla skyddsbara filer förutom det nya schemat.
deny_statement
Anger en DENY instruktion som nekar behörigheter för alla skyddsbara filer förutom det nya schemat.
Anmärkningar
Instruktioner som innehåller CREATE SCHEMA AUTHORIZATION, men inte anger ett namn, är endast tillåtna för bakåtkompatibilitet. Instruktionen orsakar inget fel, men skapar inget schema.
CREATE SCHEMA kan skapa ett schema, tabellerna och vyerna som det innehåller, och GRANT, REVOKEeller DENY behörigheter för alla skyddsbara i en enda instruktion. Du måste köra den här instruktionen som en separat batch. Objekt som skapas av -instruktionen CREATE SCHEMA skapas i det schema som du skapar.
CREATE SCHEMA transaktioner är atomiska. Om något fel uppstår under körningen av en CREATE SCHEMA -instruktion skapas ingen av de angivna skyddsbara objekten och inga behörigheter beviljas.
Du kan visa en lista över skyddsbara objekt som ska skapas av CREATE SCHEMA i valfri ordning, förutom vyer som refererar till andra vyer. I så fall måste den refererade vyn skapas innan vyn som refererar till den.
Därför kan en GRANT instruktion bevilja behörighet för ett objekt innan själva objektet skapas, eller så kan en CREATE VIEW instruktion visas före de CREATE TABLE instruktioner som skapar tabellerna som refereras av vyn. Instruktioner CREATE TABLE kan också deklarera sekundärnycklar till tabeller som definieras senare i -instruktionen CREATE SCHEMA .
Anmärkning
DENY och REVOKE stöds inuti CREATE SCHEMA -instruktioner.
DENY och REVOKE -satser körs i den ordning de visas i -instruktionen CREATE SCHEMA .
Det huvudnamn som körs CREATE SCHEMA kan ange ett annat databashuvudnamn som ägare till schemat som skapas. Den här åtgärden kräver extra behörigheter, enligt beskrivningen i avsnittet Behörigheter senare i den här artikeln.
Det nya schemat ägs av något av följande huvudnamn på databasnivå: databasanvändare, databasroll eller programroll. Objekt som skapats i ett schema ägs av schemats ägare och har en null principal_id i sys.objects. Du kan överföra ägarskapet för schemabaserade objekt till valfritt huvudnamn på databasnivå, men schemaägaren behåller CONTROL alltid behörighet för objekt i schemat.
Anmärkning
Scheman motsvarar inte databasanvändare. Använd systemkatalogvyer för att identifiera eventuella skillnader mellan databasanvändare och scheman.
Implicit schema och användarskapande
Anmärkning
Microsoft Entra-ID kallades tidigare Azure Active Directory (Azure AD).
I vissa fall kan en användare använda en databas utan att ha ett databasanvändarkonto (ett databasobjekt i databasen). Det här villkoret kan inträffa i följande situationer:
En inloggning har
CONTROL SERVERbehörighet.En Windows-användare har inte ett enskilt databasanvändarkonto (ett databasobjekt i databasen), men får åtkomst till en databas som medlem i en Windows-grupp som har ett databasanvändarkonto (ett databashuvudnamn för Windows-gruppen).
En Microsoft Entra-användare har inte ett enskilt databasanvändarkonto (ett databashuvudnamn i databasen), men kommer åt en databas som medlem i en Microsoft Entra-grupp som har ett databasanvändarkonto (ett databashuvudnamn för Microsoft Entra-gruppen).
När en användare utan ett databasanvändarkonto skapar ett objekt utan att ange ett befintligt schema skapas automatiskt ett databashuvudnamn och standardschema i databasen för användaren. Det skapade databasobjektet och schemat har samma namn som det namn som användaren använde vid anslutning till SQL Server (inloggningsnamnet för SQL Server-autentisering eller Windows-användarnamnet).
Det här beteendet är nödvändigt för att tillåta användare som är baserade på Windows-grupper att skapa och äga objekt. Det kan dock leda till att scheman och användare oavsiktligt skapas. Undvik att implicit skapa användare och scheman genom att när det är möjligt uttryckligen skapa databasobjekt och tilldela ett standardschema. Eller uttryckligen ange ett befintligt schema när du skapar objekt i en databas med hjälp av två- eller tredelade objektnamn.
Det går inte att skapa en Microsoft Entra-användare implicit i SQL Database. Eftersom skapandet av en Microsoft Entra-användare från en extern provider måste kontrollera användarens status i Microsoft Entra-ID misslyckas det med fel 2760: The specified schema name "<user@domain>" either does not exist or you do not have permission to use it. Och sedan fel 2759: CREATE SCHEMA failed due to previous errors.
Försök att skapa eller ändra scheman resulterar i felet 15151: Cannot find the user '', because it does not exist or you do not have permission., följt av fel 2759. Om du vill kringgå dessa fel skapar du antingen Microsoft Entra-användaren från en extern provider eller ändrar Microsoft Entra-gruppen för att tilldela ett standardschema. Kör sedan instruktionen som skapar objektet igen.
I SQL Analytics-slutpunkten och warehouse i Microsoft Fabric kan schemanamn inte innehålla / eller \ sluta med en ..
Utfasningsmeddelande
CREATE SCHEMA instruktioner som inte anger ett schemanamn stöds för närvarande för bakåtkompatibilitet. Dessa instruktioner skapar egentligen inte ett schema i databasen, men de skapar tabeller och vyer och beviljar behörigheter. Huvudnamn behöver CREATE SCHEMA inte behörighet för att köra den här tidigare formen av CREATE SCHEMA, eftersom inget schema skapas. Den här funktionen tas bort från en framtida version av SQL Server.
Behörigheter
Kräver CREATE SCHEMA behörighet för databasen.
Om du vill skapa ett objekt som anges i -instruktionen CREATE SCHEMA måste användaren ha motsvarande CREATE behörighet.
Om du vill ange en annan användare som ägare till schemat som skapas måste anroparen ha IMPERSONATE behörighet för den användaren. Om en databasroll anges som ägare måste anroparen ha något av följande: medlemskap i rollen eller ALTER behörigheten för rollen.
För den bakåtkompatibla syntaxen kontrolleras inga behörigheter CREATE SCHEMA eftersom inget schema skapas.
Behörigheter i Infrastrukturdatalager
Förutom behörigheten CREATE SCHEMA i Fabric Data Warehouse måste användaren vara medlem i arbetsytan Administratör, Medlem eller Deltagare.
Exempel
A. Skapa ett schema och bevilja behörigheter
I följande exempel skapas ett schema Sprockets som ägs av Annik som innehåller tabellen NineProngs. Uttalandet ger SELECT till Mandar och avslår SELECT till Prasanna.
Sprockets och NineProngs skapas i en enda instruktion.
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
Exempel: Azure Synapse Analytics and Analytics Platform System (PDW)
B. Skapa ett schema och en tabell i schemat
I följande exempel skapas ett schema Sales och sedan skapas en tabell Sales.Region i schemat.
CREATE SCHEMA Sales;
GO
CREATE TABLE Sales.Region
(
Region_id INT NOT NULL,
Region_Name CHAR (5) NOT NULL
)
WITH (DISTRIBUTION = REPLICATE);
GO
C. Ange ägaren till ett schema
I följande exempel skapas ett Production schema och anges Mary som ägare.
CREATE SCHEMA Production AUTHORIZATION [Contoso\Mary];
GO