CREATE SCHEMA (Transact-SQL)

Tworzy schemat w bieżącej bazie danych.Transakcja CREATE SCHEMA można również utworzyć tabele i widoki w ramach nowego schematu i ustawić GRANT, DENY lub REVOKE uprawnień do tych obiektów.

Topic link iconKonwencje składni języka Transact-SQL

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 
    }

Argumenty

  • schema_name
    Jest to nazwa, za pomocą których schematu jest identyfikowana w bazie danych.

  • autoryzacja owner_name
    Określa nazwę głównego poziom bazy danych, który będzie właścicielem schematu.Tego podmiotu może właścicielem innych schematów i nie może być bieżącego schematu jego domyślnego schematu.

  • table_definition
    Określa instrukcja CREATE tabela, który tworzy tabela w schemacie.Wykonywanie tej instrukcja głównej musi mieć uprawnienia CREATE tabela w bieżącej bazie danych.

  • view_definition
    Określa instrukcja CREATE VIEW, która tworzy widok w schemacie.Wykonywanie tej instrukcja głównej musi mieć uprawnienie CREATE VIEW w bieżącej bazie danych.

  • grant_statement
    Określa instrukcja GRANT, która udziela uprawnienia dla dowolnego zabezpieczany z wyjątkiem nowego schematu.

  • revoke_statement
    Określa instrukcja REVOKE, która odwołuje uprawnienia dla dowolnego zabezpieczany z wyjątkiem nowego schematu.

  • deny_statement
    Określa instrukcja DENY, która odmawia uprawnienia dla dowolnego zabezpieczany z wyjątkiem nowego schematu.

Remarks

Uwaga

Instrukcje, które zawierają CREATE SCHEMA autoryzacja, ale nie określono nazwy są dozwolone tylko zgodność z poprzednimi wersjami.

CREATE SCHEMA, można utworzyć schemat, tabele i widoki, zawiera on i GRANT, REVOKE, lub DENY uprawnienia dla dowolnego zabezpieczany w pojedynczej instrukcja.Ta instrukcja muszą być wykonane jako osobne zadanie partia.Obiekty w instrukcja CREATE SCHEMA są tworzone w schemacie, który jest tworzony.

CREATE SCHEMA transakcje są niepodzielny.Jeśli wystąpi jakiś błąd podczas wykonywania instrukcja CREATE SCHEMA, żaden z określonych securables są tworzone i nie uprawnienia są przyznawane.

Securables ma zostać utworzony przez CREATE SCHEMA może być wymienione w dowolnej kolejności, z wyjątkiem dla widoków, które odwołują się do innych widoków.W takim przypadek widoku odwołania musi zostać utworzony przed widok, który odwołuje się do jej.

Dlatego Instrukcja GRANT może przyznać uprawnienie dla obiektu, zanim sam obiekt jest tworzony lub instrukcji CREATE VIEW może pojawić się przed instrukcji CREATE tabela, które należy utworzyć tabele, do którego odnosi się w widoku.Ponadto instrukcje CREATE tabela można zadeklarować kluczy obcych z tabel, które są zdefiniowane w dalszej części instrukcja CREATE SCHEMA.

Uwaga

DENY i REVOKE nie są obsługiwane w instrukcji CREATE SCHEMA.Klauzule DENY i REVOKE zostanie wykonane w kolejności, w jakiej występują w instrukcja CREATE SCHEMA.

Główny, który wykonuje CREATE SCHEMA można określić inny podmiot bazy danych jako właściciela schematu tworzony.Wymaga to dodatkowe uprawnienia, jak to opisano w części "Uprawnienia" w dalszej części tego tematu.

Nowy schemat jest posiadany przez jedną z następujących wystawców poziom bazy danych: użytkownik bazy danych, rola bazy danych lub roli aplikacji. Obiekty utworzone w ramach schematu własnością właściciela schematu i ma wartość NULL principal_id in sys.Objects.Własność obiektów zawartych w schemacie mogą zostać przeniesione do dowolnego głównego poziom bazy danych, ale właściciela schematu zawsze zachowuje uprawnienie Kontrola do obiektów znajdujących się w schemacie.

Ostrzeżenie

Beginning with SQL Server 2005, the behavior of schemas changed. As a result, code that assumes that schemas are equivalent to database users may no longer return correct results. Old catalog views, including sysobjects, should not be used in a database in which any of the following DDL statements have ever been used: 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. In such databases you must instead use the new catalog views. The new catalog views take into account the separation of principals and schemas that was introduced in SQL Server 2005. For more information about catalog views, see Catalog Views (Transact-SQL).

Powiadomienie o zaniechania

Instrukcji CREATE SCHEMA, których nie określono nazwy schematu są obecnie obsługiwane w celu zapewnienia zgodności z poprzednimi wersjami.Instrukcje te nie tworzą faktycznie schematu wewnątrz bazy danych, ale utworzyć tabele i widoki i udzielić uprawnień.Podmioty nie ma potrzeby CREATE SCHEMA uprawnienia do wykonać tego wcześniejszych formularza CREATE SCHEMA, ponieważ nie schemat jest tworzony.Ta funkcja zostanie usunięta z przyszłej wersji programu SQL Server.

Uprawnienia

Wymaga uprawnienia CREATE SCHEMA w bazie danych.

Aby utworzyć obiekt określony w instrukcja CREATE SCHEMA, użytkownik musi mieć odpowiednie uprawnienie CREATE.

Aby określić innego użytkownika jako właściciela schematu, tworzenia, obiekt wywołujący musi mieć uprawnienie do PERSONIFIKACJI na tego użytkownika.Jeśli rola bazy danych jest określony jako właściciel, obiekt wywołujący musi mieć jedną z następujących czynności: członkostwo w roli lub ALTER uprawnienia roli.

Uwaga

Zapoznać się ze składnią zapewniającej zgodność ze starszymi wersjami Brak uprawnień do CREATE SCHEMA są sprawdzane, ponieważ nie schemat jest tworzony.

Przykłady

W następującym przykładzie zostanie utworzony schemat Sprockets właścicielem Annik zawiera tabela NineProngs. Udziela instrukcja SELECT Aby Mandar i go odmawia SELECT Aby Prasanna. Należy zauważyć, że Sprockets i NineProngs są tworzone w pojedynczej instrukcja.

USE AdventureWorks;
GO
CREATE SCHEMA Sprockets AUTHORIZATION Annik
    CREATE TABLE NineProngs (source int, cost int, partnumber int)
    GRANT SELECT TO Mandar
    DENY SELECT TO Prasanna;
GO