Esporta (0) Stampa
Espandi tutto
Espandi Riduci a icona
Il presente articolo è stato tradotto manualmente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

CREATE SCHEMA (Transact-SQL)

Crea uno schema nel database corrente. La transazione CREATE SCHEMA può anche creare tabelle e viste all'interno del nuovo schema e impostare le autorizzazioni GRANT, DENY o REVOKE per tali oggetti.

Si applica a: SQL Server (SQL Server 2008 tramite versione corrente), Database SQL di Azure (versione iniziale tramite versione corrente).

Icona di collegamento a un argomento Convenzioni della sintassi 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 
    }

schema_name

Nome con il quale viene identificato lo schema all'interno del database.

AUTHORIZATION owner_name

Specifica il nome dell'entità a livello di database che sarà proprietaria dello schema. L'entità può essere proprietaria di altri schemi e non può utilizzare lo schema corrente come schema predefinito.

table_definition

Specifica un'istruzione CREATE TABLE che crea una tabella all'interno dello schema. L'entità che esegue l'istruzione deve disporre dell'autorizzazione CREATE TABLE per il database corrente.

view_definition

Specifica un'istruzione CREATE VIEW che crea una vista all'interno dello schema. L'entità che esegue l'istruzione deve disporre dell'autorizzazione CREATE VIEW per il database corrente.

grant_statement

Specifica un'istruzione GRANT che concede le autorizzazioni per ogni entità a protezione diretta ad eccezione del nuovo schema.

revoke_statement

Specifica un'istruzione REVOKE che revoca le autorizzazioni per ogni entità a protezione diretta ad eccezione del nuovo schema.

deny_statement

Specifica un'istruzione DENY che nega le autorizzazioni per ogni entità a protezione diretta ad eccezione del nuovo schema.

Nota Nota

Le istruzioni che contengono CREATE SCHEMA AUTHORIZATION ma non specificano un nome sono supportate unicamente per compatibilità con le versioni precedenti.

CREATE SCHEMA consente di creare uno schema, le tabelle e le viste in esso contenute e concedere, revocare o negare le autorizzazioni per ogni entità a protezione diretta in una singola istruzione. Questa istruzione deve essere eseguita come batch separato. Gli oggetti creati tramite l'istruzione CREATE SCHEMA vengono creati all'interno dello schema di cui è in corso la creazione.

Le transazioni CREATE SCHEMA sono atomiche. In caso di errori durante l'esecuzione di un'istruzione CREATE SCHEMA, non verrà creata alcuna entità a protezione diretta e non verranno concesse autorizzazioni.

Le entità a protezione diretta da creare tramite CREATE SCHEMA possono essere elencate in qualsiasi ordine, ad eccezione delle viste che fanno riferimento ad altre viste. In questo caso, la vista a cui viene fatto riferimento deve essere creata prima della vista che vi fa riferimento.

Un'istruzione GRANT può pertanto concedere l'autorizzazione per un oggetto prima che l'oggetto stesso venga creato, mentre un'istruzione CREATE VIEW può essere visualizzata prima delle istruzioni CREATE TABLE che creano le tabelle a cui fa riferimento la vista. Le istruzioni CREATE TABLE, inoltre, possono dichiarare chiavi esterne per le tabelle definite successivamente nell'istruzione CREATE SCHEMA.

Nota Nota

Le clausole DENY e REVOKE sono supportate nelle istruzioni CREATE SCHEMA. Le clausole DENY e REVOKE vengono eseguite nell'ordine in cui compaiono nell'istruzione CREATE SCHEMA.

L'entità che esegue CREATE SCHEMA può specificare un'altra entità di database come proprietario dello schema di cui è in corso la creazione. A tale scopo, sono richieste ulteriori autorizzazioni, come illustrato nella sezione "Autorizzazioni" più avanti in questo argomento.

Il nuovo schema è di proprietà di una delle seguenti entità a livello di database: utente di database, ruolo di database o ruolo applicazione. Gli oggetti creati all'interno di uno schema appartengono al proprietario dello schema e hanno un valore NULL per principal_id in sys.objects. La proprietà degli oggetti contenuti in uno schema può essere trasferita a qualsiasi entità a livello di database, ma il proprietario dello schema mantiene sempre l'autorizzazione CONTROL per gli oggetti all'interno dello schema.

Nota di attenzione Attenzione

A partire da SQL Server 2005, il funzionamento degli schemi è stato modificato. È pertanto possibile che il codice in cui gli schemi vengono considerati equivalenti agli utenti del database non restituisca risultati corretti. Non utilizzare le viste del catalogo delle versioni precedenti, inclusa sysobjects, nei database in cui sia già stata utilizzata una delle istruzioni DDL seguenti: 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 tali database è invece necessario utilizzare le nuove viste del catalogo. Le nuove viste del catalogo prendono in considerazione la separazione tra entità e schemi introdotta in SQL Server 2005. Per ulteriori informazioni sulle viste del catalogo, vedere Viste del catalogo (Transact-SQL).

Quando si crea un oggetto di database, se si specifica un'entità di dominio valida (utente o gruppo) come proprietario dell'oggetto, l'entità di dominio sarà aggiunta al database come uno schema. Il proprietario del nuovo schema sarà l'entità di dominio.

Informativa sulle funzionalità deprecate

Le istruzioni CREATE SCHEMA che non specificano un nome di schema sono attualmente supportate per compatibilità con le versioni precedenti. Tali istruzioni in realtà non creano uno schema all'interno del database, ma creano tabelle e viste e concedono autorizzazioni. Le entità non necessitano dell'autorizzazione CREATE SCHEMA per eseguire questa versione meno recente di CREATE SCHEMA, perché non viene creato alcuno schema. Questa funzionalità verrà rimossa a partire da una delle prossime versioni di SQL Server.

È richiesta l'autorizzazione CREATE SCHEMA per il database.

Per creare un oggetto specificato all'interno dell'istruzione CREATE SCHEMA, l'utente deve disporre dell'autorizzazione CREATE corrispondente.

Per specificare un altro utente come proprietario dello schema che viene creato, l'utente deve disporre dell'autorizzazione IMPERSONATE per quell'utente. Se si specifica un ruolo di database come proprietario, il chiamante deve disporre dell'appartenenza al ruolo oppure dell'autorizzazione ALTER per il ruolo.

Nota Nota

Per motivi di compatibilità con la sintassi precedente, non vengono controllate le autorizzazioni per CREATE SCHEMA perché non viene creato alcuno schema.

Nell'esempio seguente viene creato lo schema Sprockets, di proprietà di Annik, contenente la tabella NineProngs. L'istruzione concede SELECT a Mandar e nega SELECT a Prasanna. Si noti che Sprockets e NineProngs vengono creati in una singola istruzione.

USE AdventureWorks2012;
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 
Il documento è risultato utile?
(1500 caratteri rimanenti)
Grazie per i commenti inviati.

Aggiunte alla community

AGGIUNGI
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2014 Microsoft