Megosztás a következőn keresztül:


SÉMA LÉTREHOZÁSA (Transact-SQL)

[! INCLUDE [sql-asdb-asdbmi-asa-pdw-fabricse-fabricdw-fabricsqldb(.. /.. /includes/applies-to-version/sql-asdb-asdbmi-asa-pdw-fabricse-fabricdw-fabricsqldb.md)]

Létrehoz egy sémát az aktuális adatbázisban. A CREATE SCHEMA tranzakció táblákat és nézeteket is létrehozhat az új sémán belül, és beállíthat GRANT, DENYvagy REVOKE engedélyeket ezeken az objektumokon.

Transact-SQL szintaxis konvenciók

Szemantika

Szintaxis az SQL Serverhez, az Azure SQL Database-hez és az SQL Database-hez a Microsoft Fabricben.

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
    }

Az Azure Synapse Analytics és a párhuzamos adattárház szintaxisa.

CREATE SCHEMA schema_name [ AUTHORIZATION owner_name ] [;]

Érvek

schema_name

Megadja a séma nevét az adatbázisban.

ENGEDÉLYEZÉSI owner_name

Megadja annak az adatbázisszintű egyszerűnek a nevét, amely a sémát fogja birtokolni. Ez az egyszerű séma más sémákkal is rendelkezhet, és előfordulhat, hogy nem az aktuális sémát használja alapértelmezett sémaként.

table_definition

Olyan utasítást CREATE TABLE ad meg, amely létrehoz egy táblát a sémán belül. Az utasítást végrehajtó tagnak engedéllyel kell rendelkeznie CREATE TABLE az aktuális adatbázisban.

view_definition

Olyan utasítást CREATE VIEW ad meg, amely létrehoz egy nézetet a sémán belül. Az utasítást végrehajtó tagnak engedéllyel kell rendelkeznie CREATE VIEW az aktuális adatbázisban.

grant_statement

Olyan utasítást GRANT ad meg, amely az új sémán kívül minden biztonságoshoz engedélyt ad.

revoke_statement

Olyan utasítást REVOKE ad meg, amely visszavonja az engedélyeket az új séma kivételével bármely biztonságos eszközre.

deny_statement

Olyan utasítást DENY ad meg, amely az új sémán kívül bármely biztonságosra vonatkozó engedélyt tagad meg.

Megjegyzések

A nevet nem tartalmazó CREATE SCHEMA AUTHORIZATION, de névvel nem rendelkező utasítások csak a visszamenőleges kompatibilitás érdekében engedélyezettek. Az utasítás nem okoz hibát, de nem hoz létre sémát.

CREATE SCHEMAlétrehozhat egy sémát, a benne található táblákat és nézeteket, valamint GRANTREVOKEaz DENY egyetlen utasításban biztonságossá tett engedélyeket vagy engedélyeket. Ezt az utasítást külön kötegként kell végrehajtania. Az utasítás által CREATE SCHEMA létrehozott objektumok a létrehozott sémában jönnek létre.

CREATE SCHEMA a tranzakciók atomiak. Ha egy utasítás végrehajtása CREATE SCHEMA során bármilyen hiba történik, a rendszer nem hozza létre a megadott biztonságos kulcsokat, és nem kap engedélyeket.

A más nézetekre hivatkozó nézetek kivételével tetszőleges sorrendben listázhatja a létrehozandó CREATE SCHEMA biztonságos elemet. Ebben az esetben a hivatkozott nézetet az arra hivatkozó nézet előtt kell létrehozni.

Ezért az GRANT utasítás engedélyt adhat egy objektumnak, mielőtt maga az objektum létrejön, vagy egy CREATE VIEW utasítás megjelenhet a CREATE TABLE nézet által hivatkozott táblákat létrehozó utasítások előtt. Az CREATE TABLE utasítások emellett deklarálhatják az utasítás későbbi részében definiált táblák idegen kulcsait CREATE SCHEMA is.

Megjegyzés:

DENY és REVOKE a belső CREATE SCHEMA utasítások támogatják. DENY és REVOKE a záradékok végrehajtása abban a sorrendben történik, amelyben azok megjelennek az CREATE SCHEMA utasításban.

A végrehajtott CREATE SCHEMA egyszerű rendszernév megadhat egy másik adatbázisnevet a létrehozott séma tulajdonosaként. Ehhez a művelethez további engedélyekre van szükség, ahogyan azt a cikk későbbi , Engedélyek szakaszában is ismertetjük.

Az új séma az alábbi adatbázisszintű tagok egyikének tulajdonosa: adatbázis-felhasználó, adatbázis-szerepkör vagy alkalmazásszerepkör. A sémában létrehozott objektumok a séma tulajdonosának tulajdonában vannak, és null principal_id értékűek sys.objects. A séma által tartalmazott objektumok tulajdonjogát bármely adatbázisszintű tagra átruházhatja, de a sématulajdonos mindig fenntartja CONTROL az engedélyeket a sémán belüli objektumokra.

Megjegyzés:

A sémák nem egyenértékűek az adatbázis felhasználóival. A rendszerkatalógus nézeteivel azonosíthatja az adatbázis-felhasználók és a sémák közötti különbségeket.

Implicit séma és felhasználólétrehozás

Megjegyzés:

A Microsoft Entra ID-t korábban Azure Active Directorynak (Azure AD) nevezték.

Bizonyos esetekben a felhasználók adatbázis-felhasználói fiók (az adatbázis egyszerű adatbázisa) nélkül is használhatják az adatbázist. Ez a feltétel a következő esetekben fordulhat elő:

  • A bejelentkezéshez jogosultságok vannak CONTROL SERVER .

  • A Windows-felhasználók nem rendelkeznek egyéni adatbázis-felhasználói fiókkal (az adatbázisnévvel az adatbázisban), de egy adatbázist egy olyan Windows-csoport tagjaként érnek el, amely rendelkezik adatbázis-felhasználói fiókkal (a Windows-csoport egyik egyszerű adatbázisával).

  • A Microsoft Entra-felhasználók nem rendelkeznek egyéni adatbázis-felhasználói fiókkal (az adatbázisban egy egyszerű adatbázissal), hanem egy adatbázishoz férnek hozzá egy olyan Microsoft Entra-csoport tagjaként, amely rendelkezik adatbázis-felhasználói fiókkal (a Microsoft Entra-csoport egyik egyszerű adatbázisával).

Ha egy adatbázis-felhasználói fiókkal nem rendelkező felhasználó létrehoz egy objektumot meglévő séma megadása nélkül, a rendszer automatikusan létrehoz egy adatbázisnevet és egy alapértelmezett sémát az adatbázisban. A létrehozott adatbázisnév és -séma neve megegyezik az SQL Serverhez való csatlakozáskor használt névvel (az SQL Server hitelesítési bejelentkezési nevével vagy a Windows felhasználónévvel).

Ez a viselkedés szükséges ahhoz, hogy a Windows-csoportokon alapuló felhasználók objektumokat hozzanak létre és sajátozzanak el. Ez azonban sémák és felhasználók véletlen létrehozását eredményezheti. A felhasználók és sémák implicit létrehozásának elkerülése érdekében lehetőség szerint explicit módon hozzon létre adatbázis-tagokat, és rendeljen hozzá egy alapértelmezett sémát. Vagy explicit módon adjon meg egy meglévő sémát, amikor objektumokat hoz létre egy adatbázisban két vagy háromrészes objektumnevek használatával.

A Microsoft Entra-felhasználó implicit létrehozása nem lehetséges az SQL Database-ben. Mivel a Microsoft Entra-felhasználó külső szolgáltatótól való létrehozásakor ellenőriznie kell a felhasználó állapotát a Microsoft Entra-azonosítóban, a felhasználó létrehozása a 2760-as hibával meghiúsul: The specified schema name "<user@domain>" either does not exist or you do not have permission to use it. Majd a 2759-as hiba: CREATE SCHEMA failed due to previous errors.

A sémák létrehozására vagy módosítására tett kísérletek az 15151-et eredményezik, Cannot find the user '', because it does not exist or you do not have permission.amelyet a 2759-ös hiba követ. A hibák megkerüléséhez hozza létre a Microsoft Entra-felhasználót egy külső szolgáltatótól, vagy módosítsa a Microsoft Entra csoportot egy alapértelmezett séma hozzárendeléséhez. Ezután futtassa újra az objektumot létrehozó utasítást.

A Microsoft Fabric SQL Analytics-végpontjában és warehouse-jában a sémanevek nem tartalmazhatnak / vagy \ végződhetnek ..

Elavulással kapcsolatos értesítés

CREATE SCHEMA A sémanevet nem tartalmazó utasítások jelenleg támogatottak a visszamenőleges kompatibilitás érdekében. Ezek az utasítások valójában nem hoznak létre sémát az adatbázisban, de táblákat és nézeteket hoznak létre, és engedélyeket adnak. A rendszerbiztonsági tagoknak nincs szükségük engedélyre CREATE SCHEMA a korábbi formájának CREATE SCHEMAvégrehajtásához, mert nem jön létre séma. Ez a funkció el lesz távolítva az SQL Server egy későbbi kiadásából.

Engedélyek

Az adatbázishoz CREATE SCHEMA engedély szükséges.

Az utasításban CREATE SCHEMA megadott objektum létrehozásához a felhasználónak rendelkeznie kell a megfelelő CREATE engedéllyel.

Ha egy másik felhasználót szeretne megadni a létrehozott séma tulajdonosaként, a hívónak engedéllyel kell rendelkeznie IMPERSONATE az adott felhasználóhoz. Ha egy adatbázis-szerepkör van megadva tulajdonosként, a hívónak a következők egyikével kell rendelkeznie: tagsággal kell rendelkeznie a szerepkörben, vagy ALTER engedélyt kell adnia a szerepkörre.

A visszamenőlegesen kompatibilis szintaxis esetében a rendszer nem ellenőrzi az CREATE SCHEMA engedélyeket, mert nem jön létre séma.

Engedélyek a Fabric Data Warehouse-ban

A Fabric Data Warehouse-ban az CREATE SCHEMA engedélyen kívül a felhasználónak rendszergazdai, tagi vagy közreműködői munkaterületi szerepkörrel kell rendelkeznie.

Példák

Egy. Séma létrehozása és engedélyek megadása

Az alábbi példa olyan sémát Sprockets hoz létre, amely Annik a táblát NineProngstartalmazza. A nyilatkozat SELECT ad Mandar-nek, és megtagadja SELECT-t Prasanna-től. Sprockets és NineProngs egyetlen utasításban jönnek létre.

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

Példák: Azure Synapse Analytics and Analytics Platform System (PDW)

B. Séma és tábla létrehozása a sémában

Az alábbi példa sémát Sales hoz létre, majd létrehoz egy táblát Sales.Region a sémában.

CREATE SCHEMA Sales;
GO

CREATE TABLE Sales.Region
(
    Region_id INT NOT NULL,
    Region_Name CHAR (5) NOT NULL
)
WITH (DISTRIBUTION = REPLICATE);
GO

C. Séma tulajdonosának beállítása

Az alábbi példa létrehoz egy sémát Production , és tulajdonosként állítja be Mary .

CREATE SCHEMA Production AUTHORIZATION [Contoso\Mary];
GO