CREATE DATABASE

Crea un nuovo database.

Selezionare una delle schede seguenti per la sintassi, gli argomenti, i commenti, le autorizzazioni e gli esempi per la specifica versione di SQL in uso.

Selezionare un prodotto

Nella riga seguente selezionare il nome del prodotto a cui si è interessati. Verranno visualizzate solo le informazioni per tale prodotto.

* SQL Server *  

 

SQL Server

Panoramica

In SQL Server, questa istruzione crea un nuovo database, i file usati e i filegroup. Può anche essere usata per creare uno snapshot del database oppure collegare file di database per creare un database dai file scollegati di un altro database.

Sintassi

Crea un database .

Per altre informazioni sulle convenzioni della sintassi, vedere Convenzioni della sintassi Transact-SQL.

CREATE DATABASE database_name
[ CONTAINMENT = { NONE | PARTIAL } ]
[ ON
      [ PRIMARY ] <filespec> [ ,...n ]
      [ , <filegroup> [ ,...n ] ]
      [ LOG ON <filespec> [ ,...n ] ]
]
[ COLLATE collation_name ]
[ WITH <option> [,...n ] ]
[;]

<option> ::=
{
      FILESTREAM ( <filestream_option> [,...n ] )
    | DEFAULT_FULLTEXT_LANGUAGE = { lcid | language_name | language_alias }
    | DEFAULT_LANGUAGE = { lcid | language_name | language_alias }
    | NESTED_TRIGGERS = { OFF | ON }
    | TRANSFORM_NOISE_WORDS = { OFF | ON }
    | TWO_DIGIT_YEAR_CUTOFF = <two_digit_year_cutoff>
    | DB_CHAINING { OFF | ON }
    | TRUSTWORTHY { OFF | ON }
    | PERSISTENT_LOG_BUFFER=ON ( DIRECTORY_NAME='<Filepath to folder on DAX formatted volume>' )
    | LEDGER = {ON | OFF }
}

<filestream_option> ::=
{
      NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL }
    | DIRECTORY_NAME = 'directory_name'
}

<filespec> ::=
{
(
    NAME = logical_file_name ,
    FILENAME = { 'os_file_name' | 'filestream_path' }
    [ , SIZE = size [ KB | MB | GB | TB ] ]
    [ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ]
    [ , FILEGROWTH = growth_increment [ KB | MB | GB | TB | % ] ]
)
}

<filegroup> ::=
{
FILEGROUP filegroup name [ [ CONTAINS FILESTREAM ] [ DEFAULT ] | CONTAINS MEMORY_OPTIMIZED_DATA ]
    <filespec> [ ,...n ]
}

Collegare un database

CREATE DATABASE database_name
    ON <filespec> [ ,...n ]
    FOR { { ATTACH [ WITH <attach_database_option> [ , ...n ] ] }
        | ATTACH_REBUILD_LOG }
[;]

<attach_database_option> ::=
{
      <service_broker_option>
    | RESTRICTED_USER
    | FILESTREAM ( DIRECTORY_NAME = { 'directory_name' | NULL } )
}

<service_broker_option> ::=
{
    ENABLE_BROKER
  | NEW_BROKER
  | ERROR_BROKER_CONVERSATIONS
}

Creare uno snapshot del database

CREATE DATABASE database_snapshot_name
    ON
    (
        NAME = logical_file_name,
        FILENAME = 'os_file_name'
    ) [ ,...n ]
    AS SNAPSHOT OF
[;]

Argomenti

database_name

Nome del nuovo database. I nomi di database devono essere univoci in un'istanza di SQL Server e conformi alle regole per gli identificatori.

database_name può essere composto da un massimo di 128 caratteri, eccetto i casi in cui non è stato specificato un nome logico per il file di log. Se non è stato specificato un nome file logico, SQL Server genera logical_file_name e os_file_name per il log accodando un suffisso a database_name. Questo limita il numero di caratteri di database_name a 123 per fare in modo che il nome di file logico generato includa un massimo di 128 caratteri.

Se non è stato specificato il nome del file di dati, SQL Server usa database_name sia come logical_file_name che come os_file_name. Il percorso predefinito viene ottenuto dal Registro di sistema. Il percorso predefinito può essere modificato in Proprietà server (pagina Impostazioni database) in Management Studio. La modifica del percorso predefinito richiede il riavvio di SQL Server.

CONTAINMENT = { NONE | PARTIAL}

Si applica a: SQL Server 2012 (11.x) e versioni successive

Viene specificato lo stato di indipendenza del database. NONE = Database non indipendente. PARTIAL = database parzialmente indipendente.

In...

Specifica che i file su disco utilizzati per archiviare le sezioni di dati del database (file di dati) vengono definiti in modo esplicito. ON è obbligatorio quando è seguito da un elenco di valori delimitati da virgole di elementi <filespec> che definiscono i file di dati per il filegroup primario. L'elenco di file del filegroup primario può essere seguito da un elenco facoltativo di valori delimitati da virgole di elementi <filegroup> che definiscono i filegroup utente e i relativi file.

PRIMARY

Specifica che l'elenco <filespec> associato definisce il file primario. Il primo file specificato nella voce <filespec> nel filegroup primario diventa il file primario. Un database può includere un solo file primario. Per altre informazioni, vedere Database Files and Filegroups.

Se la parola chiave PRIMARY viene omessa, il primo file elencato nell'istruzione CREATE DATABASE diventa il file primario.

LOG ON

Specifica che i file su disco utilizzati per archiviare il log del database (file di log) vengono definiti in modo esplicito. LOG ON è seguito da un elenco di valori delimitati da virgole di elementi <filespec> che definiscono i file di log. Se la parola chiave LOG ON viene omessa, viene creato automaticamente un singolo file di log con dimensioni pari al 25% della somma delle dimensioni di tutti i file di dati del database o pari a 512 KB, a seconda del valore maggiore. Questo file viene posizionato nel percorso predefinito del file di log. Per informazioni su questa posizione, vedere Visualizzare o modificare i percorsi predefiniti per i file di dati e di log in SSMS.

Non è possibile specificare LOG ON in uno snapshot del database.

COLLATE collation_name

Specifica le regole di confronto predefinite per il database. È possibile usare nomi di regole di confronto di Windows o SQL. Se viene omesso, al database vengono assegnate le regole di confronto predefinite dell'istanza di SQL Server. Non è possibile specificare un nome di regole di confronto in uno snapshot del database.

Non è possibile specificare un nome di regole di confronto con le clausole FOR ATTACH o FOR ATTACH_REBUILD_LOG. Per informazioni sulla modifica delle regole di confronto di un database collegato, visitare il sito Web Microsoft.

Per altre informazioni sui nomi di regole di confronto Windows e SQL, vedere COLLATE.

Nota

Le regole di confronto per i database indipendenti sono diverse rispetto a quelle dei database non indipendenti. Per altre informazioni, vedere Regole di confronto dei database indipendenti.

WITH <option>

<filestream_option>

NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL }

Si applica a: SQL Server 2012 (11.x) e versioni successive.

Specifica il livello di accesso FILESTREAM non transazionale al database.

Valore Descrizione
OFF L'accesso non transazionale è disabilitato.
READONLY I dati FILESTREAM di questo database possono essere letti da processi non transazionali.
FULL L'accesso non transazionale completo a tabelle FileTable FILESTREAM è abilitato.

DIRECTORY_NAME = <directory_name>

Si applica a: SQL Server 2012 (11.x) e versioni successive

Nome di directory compatibile con Windows. Questo nome deve essere univoco tra tutti i nomi Database_Directory nell'istanza di SQL Server. Il confronto di univocità non fa distinzione tra maiuscole e minuscole, indipendentemente dalle impostazioni delle regole di confronto di SQL Server. È necessario impostare questa opzione prima di creare un oggetto FileTable in questo database.



Le opzioni seguenti sono consentite solo quando CONTAINMENT è stato impostato su PARTIAL. Se l'opzione CONTAINMENT è impostata su NONE, si verificheranno errori.

DEFAULT_FULLTEXT_LANGUAGE = <lcid> | <nome> lingua | <alias del linguaggio>

Si applica a: SQL Server 2012 (11.x) e versioni successive

Per una descrizione completa di questa opzione, vedere Configurare l'opzione di configurazione del server Lingua predefinita full-text.

DEFAULT_LANGUAGE = <lcid> | <nome> lingua | <alias del linguaggio>

Si applica a: SQL Server 2012 (11.x) e versioni successive

Per una descrizione completa di questa opzione, vedere Configurare l'opzione di configurazione del server Lingua predefinita.

NESTED_TRIGGERS = { OFF | ON}

Si applica a: SQL Server 2012 (11.x) e versioni successive

Per una descrizione completa di questa opzione, vedere Configurare l'opzione di configurazione del server Trigger annidati.

TRANSFORM_NOISE_WORDS = { OFF | ON}

Si applica a: SQL Server 2012 (11.x) e versioni successive

Per una descrizione completa di questa opzione, vedere Configurare l'opzione di configurazione del server Transform Noise Words.

TWO_DIGIT_YEAR_CUTOFF = { 2049 | <qualsiasi anno compreso tra il 1753 e il 9999> }

Quattro cifre che rappresentano un anno. Il valore predefinito è 2049. Per una descrizione completa di questa opzione, vedere Configurare l'opzione di configurazione del server two-digit year cutoff.

DB_CHAINING { OFF | ON }

Se l'opzione è impostata su ON, il database può essere l'origine o la destinazione di una catena di proprietà tra database.

Se l'opzione è impostata su OFF, il database non può partecipare alla catena di proprietà tra database. Il valore predefinito è OFF.

Importante

L'istanza di SQL Server riconosce questa impostazione quando l'opzione server di concatenamento della proprietà tra database è impostata su 0 (OFF). Quando cross db ownership chaining è 1 (ON), tutti i database utente possono partecipare ai concatenamenti della proprietà tra database, a prescindere dal valore di questa opzione. Questa opzione viene impostata tramite sp_configure.

Per impostare questa opzione è richiesta l'appartenenza al ruolo predefinito del server sysadmin. L'opzione DB_CHAINING non può essere impostata in questi database di sistema: master, model, tempdb.

TRUSTWORTHY { OFF | ON }

Se l'opzione è impostata su ON, i moduli del database (ad esempio le viste, le funzioni definite dall'utente o le stored procedure) che utilizzano un contesto di rappresentazione possono accedere alle risorse esterne al database.

Se l'opzione è impostata su OFF, i moduli del database in un contesto di rappresentazione non possono accedere alle risorse esterne al database. Il valore predefinito è OFF.

L'opzione TRUSTWORTHY viene impostata su OFF ogni volta che il database viene collegato.

Per impostazione predefinita, per tutti i database di sistema ad eccezione del database msdb l'opzione TRUSTWORTHY è impostata su OFF. Il valore non può essere modificato per i database model e tempdb. È consigliabile evitare di impostare l'opzione TRUSTWORTHY su ON per il database master.

PERSISTENT_LOG_BUFFER=ON ( DIRECTORY_NAME='' )

Quando si specifica questa opzione, il buffer del log delle transazioni viene creato in un volume che si trova in un dispositivo disco con Storage Class Memory (memoria non volatile NVDIMM-N), noto anche come buffer di log persistente. Per altre informazioni, vedere Transaction Commit latency acceleration using Storage Class Memory (Accelerazione della latenza di commit delle transazioni con Storage Class Memory). Si applica a: SQL Server 2017 (14.x) e versioni successive.

LEDGER = {ON | OFF}

Se l'impostazione è ON, crea un database di libro mastro, in cui l'integrità di tutti i dati utente è protetta. In un database di libro mastro è possibile creare solo tabelle del libro mastro. Il valore predefinito è OFF. Il valore dell'opzione LEDGER non può essere modificato dopo la creazione del database. Per altre informazioni, vedere Configurare un database di libro mastro.

CREATE DATABASE ... FOR ATTACH [ WITH < attach_database_option > ]

Specifica che il database viene creato collegando un set esistente di file del sistema operativo. È necessaria una voce <filespec> che specifichi il file primario. Le altre voci <filespec> obbligatorie sono quelle relative ai file con percorso diverso rispetto al percorso usato in fase di creazione del database o al momento dell'ultimo collegamento del database. Per questi file è necessario specificare una voce <filespec>.

FOR ATTACH richiede le seguenti condizioni:

  • Tutti i file di dati (MDF e NDF) devono essere disponibili.
  • Tutti i file di log esistenti devono essere disponibili.

Se un database in lettura/scrittura contiene un singolo file di log attualmente non disponibile, e il database è stato chiuso senza utenti o transazioni aperte prima dell'operazione di collegamento, FOR ATTACH ricompila automaticamente il file di log e aggiorna il file primario. Per un database in sola lettura, invece, non è possibile ricostruire il log perché il file primario non può essere aggiornato. Pertanto, quando si collega un database in sola lettura a un log non disponibile, è necessario specificare i file o i file di log nella clausola FOR ATTACH.

Nota

Un database creato con una versione più recente di SQL Server non può essere collegato nelle versioni precedenti.

In SQL Server tutti i file full-text inclusi nel database che viene collegato verranno collegati insieme al database. Per specificare un nuovo percorso per il catalogo full-text, specificare la nuova posizione senza il nome del file del sistema operativo full-text. Per altre informazioni, vedere la sezione Esempi.

Se viene collegato un database contenente un'opzione FILESTREAM "Directory name" a un'istanza di SQL Server, SQL Server deve verificare che il nome Database_Directory sia univoco. In caso contrario, l'operazione di collegamento ha esito negativo con l'errore FILESTREAM Database_Directory name is not unique in this SQL Server instance. Per evitare questo errore, è necessario passare il parametro facoltativo directory_name a questa operazione.

Non è possibile specificare FOR ATTACH in uno snapshot del database.

FOR ATTACH può specificare l'opzione RESTRICTED_USER. RESTRICTED_USER consente la connessione al database solo ai membri del ruolo predefinito del database db_owner e ai membri dei ruoli predefiniti del server dbcreator e sysadmin, senza tuttavia imporre un limite al numero di connessioni. Tentativi dagli utenti non qualificati vengono rifiutati.

<service_broker_option>

Se il database usa Service Broker, usare WITH <service_broker_option> nella clausola FOR ATTACH:

Controlla il recapito dei messaggi di Service Broker e l'identificatore di Service Broker per il database. Le opzioni di Service Broker possono essere specificate solo quando viene usata la clausola FOR ATTACH.

ENABLE_BROKER

Indica che Service Broker è abilitato per il database specificato. Viene pertanto avviato il recapito dei messaggi e il valore di is_broker_enabled viene impostato su true nella vista del catalogo sys.databases. Nel database viene mantenuto l'identificatore di Service Broker esistente.

NEW_BROKER

Crea un nuovo valore di service_broker_guid sia in sys.databases che nel database ripristinato. Termina tutti gli endpoint di conversazione eseguendo la pulizia. Service Broker è abilitato, ma agli endpoint di conversazione remoti non viene inviato alcun messaggio. Tutte le route che fanno riferimento all'identificatore di Service Broker precedente devono essere ricreate con il nuovo identificatore.

ERROR_BROKER_CONVERSATIONS

Termina tutte le conversazioni e restituisce un errore che indica che il database è collegato o ripristinato. Service Broker viene disabilitato fino al termine dell'operazione e quindi viene riabilitato. Nel database viene mantenuto l'identificatore di Service Broker esistente.

Quando si collega un database replicato copiato anziché scollegato, è necessario considerare quanto segue:

  • Se si collega il database alla stessa istanza del server e alla stessa versione del database originale, non sono necessari passaggi aggiuntivi.
  • Se si collega il database alla stessa istanza del server ma si usa una versione aggiornata, dopo il completamento dell'operazione di collegamento è necessario eseguire sp_vupgrade_replication per aggiornare la replica.
  • Se si collega il database a un'istanza del server diversa, indipendentemente dalla versione, dopo il completamento dell'operazione di collegamento è necessario eseguire sp_removedbreplication per rimuovere la replica.

Nota

Il collegamento funziona con il formato di archiviazione vardecimal, ma il motore di database di SQL Server deve essere aggiornato almeno a SQL Server 2005 (9.x) SP2. Non è possibile collegare un database con un formato di archiviazione vardecimal a una versione precedente di SQL Server. Per altre informazioni sul formato di archiviazione vardecimal, vedere Compressione dei dati.

Quando un database viene collegato per la prima volta a una nuova istanza di SQL Server o viene ripristinato, nel server non viene ancora archiviata una copia della chiave master del database (crittografata dalla chiave master del servizio). È necessario usare l'istruzione OPEN MASTER KEY per decrittografare la chiave master del database. Dopo aver decrittografato la DMK, è possibile usare l'istruzione ALTER MASTER KEY REGENERATE per abilitare la decrittografia automatica per le operazioni successive, in modo da fornire al server una copia della DMK crittografata con la chiave master del servizio (SMK). Quando un database è stato aggiornato da una versione precedente, la DMK deve essere rigenerata per usare l'algoritmo AES più recente. Per altre informazioni sulla rigenerazione della DMK, vedere ALTER MASTER KEY. Il tempo richiesto per rigenerare la chiave DMK e aggiornarla ad AES dipende dal numero di oggetti protetti dalla DMK. È necessario rigenerare la chiave DMK per l'aggiornamento ad AES una sola volta e l'operazione non influenza le rigenerazioni future che fanno parte di una strategia di rotazione della chiave. Per informazioni su come aggiornare un database tramite collegamento, vedere Aggiornamento di un database usando le operazioni di scollegamento e collegamento.

Importante

È consigliabile non collegare database da origini sconosciute o non attendibili. Tali database possono contenere codice dannoso che potrebbe eseguire codice Transact-SQL indesiderato o causare errori modificando lo schema o la struttura fisica del database. Prima di usare un database da un'origine sconosciuta o non attendibile, eseguire DBCC CHECKDB sul database in un server non di produzione ed esaminare il codice contenuto nel database, ad esempio le stored procedure o altro codice definito dall'utente.

Nota

Le opzioni TRUSTWORTHY e DB_CHAINING non hanno effetto quando si collega un database.

FOR ATTACH_REBUILD_LOG

Specifica che il database viene creato collegando un set di file del sistema operativo già esistente. Questa opzione è limitata ai database in lettura/scrittura. È necessaria una voce <filespec> che specifichi il file primario. Se uno o più file di log delle transazioni sono mancanti, il file di log viene ricostruito. Il ATTACH_REBUILD_LOG crea automaticamente un nuovo file di log da 1 MB. Questo file viene posizionato nel percorso predefinito del file di log. Per informazioni su questa posizione, vedere Visualizzare o modificare i percorsi predefiniti per i file di dati e di log in SSMS.

Nota

Se i file di log sono disponibili, il motore di database usa questi file invece di ricompilare i file di log.

FOR ATTACH_REBUILD_LOG richiede le condizioni seguenti:

  • Una chiusura normale del database.
  • Tutti i file di dati (MDF e NDF) devono essere disponibili.

Importante

Questa operazione interrompe la catena di backup del log. È consigliabile eseguire un backup completo del database al termine dell'operazione. Per altre informazioni, vedere BACKUP.

In genere, l'opzione FOR ATTACH_REBUILD_LOG viene utilizzata quando si copia un database in lettura/scrittura con un log di grandi dimensioni in un altro server dove la copia verrà utilizzata principalmente, o esclusivamente, per operazioni di lettura e richiederà quindi una quantità minore di spazio di log rispetto al database originale.

Non è possibile specificare FOR ATTACH_REBUILD_LOG in uno snapshot del database.

Per altre informazioni sul collegamento e lo scollegamento di database, vedere Collegamento e scollegamento di un database.

<filespec>

Controlla le proprietà del file.

NAME logical_file_name

Specifica il nome logico per il file. Il parametro NAME è necessario quando FILENAME è specificato, eccetto quando viene specificata una delle clausole FOR ATTACH. Non è possibile assegnare il nome PRIMARY a un filegroup FILESTREAM.

logical_file_name

Nome logico usato in SQL Server quando si fa riferimento al file. Logical_file_name deve essere univoco all'interno del database e conforme alle regole per gli identificatori. Il nome può essere un carattere o una costante Unicode oppure un identificatore normale o delimitato.

FILENAME { 'os_file_name' | 'filestream_path' }

Specifica il nome del file (fisico) del sistema operativo.

'os_file_name'

Percorso e nome di file utilizzato dal sistema operativo quando si crea il file. Il file deve trovarsi in uno dei dispositivi seguenti: il server locale in cui è installato SQL Server, una rete di archiviazione (SAN) o una rete basata su iSCSI. Il percorso specificato deve essere esistente prima dell'esecuzione dell'istruzione CREATE DATABASE. Per altre informazioni, vedere Filegroup e file di database più avanti in questo articolo.

È possibile impostare i parametri SIZE, MAXSIZE e FILEGROWTH se è specificato un percorso UNC per il file.

Se il file si trova in una partizione non formattata, nell'argomento os_file_name è necessario specificare solo la lettera dell'unità di una partizione non formattata esistente. È possibile creare soltanto un file di dati su ogni partizione non formattata dal sistema operativo.

Nota

Le partizioni non elaborate non sono supportate in SQL Server 2014 e versioni successive.

I file di dati non devono essere archiviati in file system compressi a meno che non si tratti di file secondari in sola lettura o il database non sia in sola lettura. I file di log non devono mai essere archiviati in file system compressi.

'filestream_path'

Per un filegroup FILESTREAM, FILENAME si riferisce a un percorso in cui verrà archiviato FILESTREAM. È necessario che il percorso fino all'ultima cartella esista già, mentre l'ultima cartella non deve essere presente. Se, ad esempio, si specifica il percorso C:\MyFiles\MyFilestreamData, è necessario che C:\MyFiles sia presente prima di eseguire ALTER DATABASE, mentre la cartella MyFilestreamData non deve essere presente.

Il filegroup e il file (<filespec>) devono essere creati nella stessa istruzione.

Le proprietà SIZE e FILEGROWTH non si applicano a un filegroup FILESTREAM.

SIZE size

Specifica le dimensioni del file.

Non è possibile specificare SIZE quando os_file_name è specificato come percorso UNC. SIZE non si applica a un filegroup FILESTREAM.

size

Dimensioni iniziali del file.

Se non si specifica size per il file primario, il motore di database usa le dimensioni del file primario del database model. Le dimensioni predefinite del database model sono di 8 MB a partire da SQL Server 2016 (13.x) oppure di 1 MB per le versioni precedenti. Se si specifica un file di log o un file di dati secondario senza specificare il valore di size per il file, il motore di database crea un file di 8 MB a partire da SQL Server 2016 (13.x) oppure di 1 MB per le versioni precedenti. Le dimensioni specificate per il file primario devono essere uguali almeno alle dimensioni del file primario del database model.

È possibile usare i suffissi per kilobyte (KB), megabyte (MB), gigabyte (GB) e terabyte (TB). Il valore predefinito è MB. Specificare un numero intero. Non includere il valore decimale. Size è un valore intero. Per i valori superiori a 2.147.483.647, usare le unità maggiori.

MAXSIZE max_size

Valore massimo fino a cui possono aumentare le dimensioni del file. Non è possibile specificare MAXSIZE quando os_file_name è specificato come percorso UNC.

max_size

Dimensioni massime del file. È possibile usare i suffissi KB, MB, GB e TB. Il valore predefinito è MB. Specificare un numero intero. Non includere il valore decimale. Se max_size viene omesso, le dimensioni del file aumentano fino all'esaurimento dello spazio su disco. Max_size è un valore intero. Per i valori superiori a 2.147.483.647, usare le unità maggiori.

UNLIMITED

Specifica che le dimensioni del file aumentano fino a quando il disco risulta pieno. In SQL Server un file di log specificato con aumento delle dimensioni illimitato può raggiungere dimensioni massime di 2 TB, mentre le dimensioni massime di un file di dati sono di 16 TB.

Nota

Non vi sono dimensioni massime se questa opzione viene specificata per un contenitore FILESTREAM, il quale continua a crescere finché il disco non è pieno.

FILEGROWTH growth_increment

Specifica l'incremento automatico per l'aumento delle dimensioni del file. Il valore impostato per il parametro FILEGROWTH di un file non può essere superiore al valore del parametro MAXSIZE. Non è possibile specificare FILEGROWTH quando os_file_name è specificato come percorso UNC. FILEGROWTH non si applica a un filegroup FILESTREAM.

growth_increment

Quantità di spazio aggiunta al file ogni volta che è necessario nuovo spazio.

È possibile specificare il valore in megabyte (MB), kilobyte (KB), gigabyte (GB) o terabyte (TB) oppure in forma di percentuale (%). Se si specifica un valore senza il suffisso MB, KB o %, il suffisso predefinito è MB. Se si utilizza il suffisso %, l'incremento corrisponde alla percentuale delle dimensioni del file specificata quando si verifica l'incremento. Le dimensioni specificate vengono arrotondate al blocco di 64 KB più prossimo e il valore minimo è 64 KB.

Un valore 0 indica che l'opzione per l'aumento automatico è disattivata e non è consentito spazio aggiuntivo.

Se FILEGROWTH viene omesso, i valori predefiniti sono i seguenti:

Versione Valori predefiniti
A partire da SQL Server 2016 (13.x) Dati 64 MB. File di log 64 MB.
A partire da SQL Server 2005 (9.x) Dati 1 MB. File di log 10%.
Prima di SQL Server 2005 (9.x) Dati 10%. File di log 10%.

<filegroup>

Controlla le proprietà del filegroup. Non è possibile specificare il filegroup in uno snapshot del database.

FILEGROUP filegroup_name

Nome logico del filegroup.

filegroup_name

filegroup_name deve essere univoco nel database e deve essere diverso dai nomi PRIMARY e PRIMARY_LOG forniti dal sistema. Il nome può essere un carattere o una costante Unicode oppure un identificatore normale o delimitato. Il nome deve essere conforme alle regole per gli identificatori.

CONTAINS FILESTREAM

Specifica che tramite il filegroup vengono archiviati oggetti binari di grandi dimensioni (BLOB) nel file system.

DEFAULT

Indica che il filegroup specificato è il filegroup predefinito nel database.

CONTAINS MEMORY_OPTIMIZED_DATA

Si applica a: SQL Server 2014 (12.x) e versioni successive

Specifica che il filegroup archivia i dati memory_optimized nel file system. Per altre informazioni, vedere Panoramica dell'ottimizzazione in memoria e scenari di utilizzo. È ammesso un solo filegroup MEMORY_OPTIMIZED_DATA per database. Per esempi di codice che creano un filegroup per l'archiviazione di dati ottimizzati per la memoria, vedere Creazione di una tabella ottimizzata per la memoria e di una stored procedure compilata in modo nativo.

database_snapshot_name

Nome del nuovo snapshot del database. I nomi degli snapshot del database devono essere univoci in un'istanza di SQL Server e conformi alle regole per gli identificatori. database_snapshot_name può essere composto da un massimo di 128 caratteri.

ON ( NAME =logical_file_name, FILENAME ='os_file_name') [ ,... n ]

Per la creazione di uno snapshot del database, specifica un elenco di file nel database di origine. Per il funzionamento dello snapshot, è necessario specificare tutti i file di dati singolarmente. I file di log non sono tuttavia consentiti per gli snapshot del database. I filegroup FILESTREAM non sono supportati dagli snapshot del database. Se un file di dati FILESTREAM è incluso in una clausola CREATE DATABASE ON, l'istruzione non verrà eseguita e sarà generato un errore.

Per le descrizioni di NAME e FILENAME e dei rispettivi valori, vedere le descrizioni dei valori <filespec> equivalenti.

Nota

Quando si crea uno snapshot del database, le altre opzioni <filespec> e la parola chiave PRIMARY non sono consentite.

AS SNAPSHOT OF source_database_name

Specifica che il database in fase di creazione è uno snapshot del database di origine specificato da source_database_name. Lo snapshot e il database di origine devono essere archiviati nella stessa istanza.

Prima di SQL Server 2019, il database di origine per uno snapshot del database non può contenere un filegroup MEMORY_OPTIMIZED_DATA. Il supporto per gli snapshot del database in memoria è stato aggiunto in SQL Server 2019.

Per altre informazioni, vedere Snapshot del database.

Osservazioni:

Il backup del database master deve essere eseguito ogni volta che si crea, si modifica o si rilascia un database utente.

L'istruzione CREATE DATABASE deve essere eseguita in modalità autocommit, che è la modalità predefinita di gestione delle transazioni, e non è consentita in una transazione esplicita o implicita.

È possibile usare un'istruzione CREATE DATABASE per creare un database e i file che lo archiviano. SQL Server implementa l'istruzione CREATE DATABASE tramite i passaggi seguenti:

  1. SQL Server usa una copia del database modello per inizializzare il database e i relativi metadati.
  2. Un GUID di Service Broker viene assegnato al database.
  3. Il motore di database riempie quindi la parte rimanente del database con pagine vuote, ad eccezione delle pagine con dati interni che registrano come viene usato lo spazio nel database.

In un'istanza di SQL Server è possibile specificare al massimo 32.767 database.

Ogni database ha un proprietario che può eseguire attività particolari nel database. Il proprietario è l'utente che crea il database. Il proprietario del database può essere modificato tramite ALTER AUTHORIZATION.

Alcune funzionalità del database dipendono dalle caratteristiche o dalle funzionalità presenti nel file system per la disponibilità completa delle funzionalità del database. Ecco alcuni esempi di funzionalità che dipendono dal set di funzionalità del file system:

  • DBCC CHECKDB
  • FileStream
  • Backup online tramite il Servizio Copia Shadow del volume e gli snapshot dei file
  • Creazione di snapshot del database
  • Filegroup di dati ottimizzati per la memoria

Filegroup e file di database

Ogni database ha almeno due file, un file primario e un file registro transazioni, e almeno un filegroup. Per ogni database è possibile specificare un massimo di 32.767 file e 32.767 filegroup.

Durante la creazione di un database, creare file di dati di dimensioni corrispondenti alla quantità massima di dati che si prevede di includere nel database.

Per l'archiviazione dei file di database di SQL Server è consigliabile usare una rete di archiviazione (SAN), una rete basata su iSCSI o un disco collegato localmente, perché questa configurazione ottimizza le prestazioni e l'affidabilità di SQL Server.

snapshot del database

È possibile usare l'istruzione CREATE DATABASE per creare una visualizzazione statica, di sola lettura, uno snapshot del database di origine. Uno snapshot del database è consistente dal punto di vista transazionale con il database di origine al momento della creazione dello snapshot. Un database di origine può avere più snapshot.

Nota

Quando si crea uno snapshot del database, l'istruzione CREATE DATABASE non può far riferimento a file di log, file offline, file di ripristino e file inattivi.

Se la creazione di uno snapshot del database ha esito negativo, lo snapshot diventa sospetto e deve essere eliminato. Per altre informazioni, vedere DROP DATABASE.

Ogni snapshot viene mantenuto fino a quando non viene eliminato tramite DROP DATABASE.

Per altre informazioni, vedere Snapshot del database e Creare uno snapshot del database (Transact-SQL).

Opzioni di database

Quando si crea un database, vengono impostate automaticamente diverse opzioni. Per un elenco di queste opzioni, vedere Opzioni ALTER DATABASE SET.

Database modello e creazione di nuovi database

Tutti gli oggetti definiti dall'utente inclusi nel database modello vengono copiati in tutti i nuovi database. È possibile aggiungere al database model qualsiasi oggetto che si vuole includere in tutti i database appena creati, ad esempio tabelle, viste, stored procedure, tipi di dati e così via.

Quando si specifica un'istruzione CREATE DATABASE <database_name> senza parametri aggiuntivi per le dimensioni, per il file di dati primario vengono usate le stesse dimensioni del file primario nel database model.

A meno che non si specifichi FOR ATTACH, ogni nuovo database eredita le impostazioni delle opzioni di database dal database model. L'opzione di database auto shrink, ad esempio, è impostata su true in model e in tutti i nuovi database creati. Se si modificano le opzioni nel database model, le nuove impostazioni vengono usate in tutti i nuovi database creati. La modifica delle operazioni nel database model non ha effetto sui database esistenti. Se viene specificata l'opzione FOR ATTACH nell'istruzione CREATE DATABASE, i nuovi database ereditano le impostazioni delle opzioni di database dal database originale.

Visualizzare le informazioni sul database

Per restituire informazioni su database, file e filegroup, è possibile usare viste del catalogo, funzioni di sistema e stored procedure di sistema. Per altre informazioni, vedere Viste di sistema.

Autorizzazioni

È necessaria l'autorizzazione CREATE DATABASE, CREATE ANY DATABASE o ALTER ANY DATABASE.

Per mantenere il controllo sull'uso del disco in un'istanza di SQL Server, l'autorizzazione per la creazione dei database è in genere limitata a pochi account di accesso.

Nell'esempio seguente viene fornita l'autorizzazione per creare un database per l'utente del database Fay.

USE master;
GO
GRANT CREATE DATABASE TO [Fay];
GO

Autorizzazioni per i file di dati e di log

In SQL Server vengono impostate autorizzazioni specifiche per i file di dati e di log in ogni database. Le autorizzazioni seguenti vengono impostate quando le operazioni elencate di seguito vengono eseguite in un database.

  • Allegato
  • Esecuzione del backup
  • Data creazione
  • Detached
  • Modifica per l'aggiunta di un nuovo file
  • Ripristinata

Con le autorizzazioni è possibile evitare che vengano accidentalmente alterati i file che si trovano in una directory con autorizzazioni aperte.

Nota

Microsoft SQL Server 2005 Express Edition non imposta le autorizzazioni per i file di dati e di log.

Esempi

R. Creare un database senza specificare i file

Nell'esempio seguente viene creato il database mytest insieme al file di log delle transazioni e al file primario corrispondenti. Poiché l'istruzione non contiene elementi <filespec>, le dimensioni del file di database primario corrispondono a quelle del file primario del database model. Il log delle transazioni viene impostato sul valore più grande tra 512 KB o il 25% delle dimensioni del file di dati primario. Poiché MAXSIZE non è specificato, le dimensioni dei file possono aumentare fino a riempire lo spazio disponibile su disco. In questo esempio viene inoltre illustrato come eliminare l'eventuale database denominato mytest prima di creare il database mytest.

USE master;
GO
IF DB_ID (N'mytest') IS NOT NULL
DROP DATABASE mytest;
GO
CREATE DATABASE mytest;
GO
-- Verify the database files and sizes
SELECT name, size, size*1.0/128 AS [Size in MBs]
FROM sys.master_files
WHERE name = N'mytest';
GO

B. Creare un database che specifica i file di dati e di log delle transazioni

Nell'esempio seguente viene creato il database Sales. Dal momento che la parola chiave PRIMARY non è specificata, il primo file, cioè Sales_dat, corrisponde al file primario. Poiché nel parametro SIZE non viene specificato il suffisso MB o KB per le dimensioni del file Sales_dat , viene utilizzato MB e le dimensioni del file vengono allocate in megabyte. Il backup del database Sales_log vengono allocate in megabyte perché nel parametro MB è stato specificato in modo esplicito il suffisso SIZE .

USE master;
GO
CREATE DATABASE Sales
ON
( NAME = Sales_dat,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\saledat.mdf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5 )
LOG ON
( NAME = Sales_log,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\salelog.ldf',
    SIZE = 5MB,
    MAXSIZE = 25MB,
    FILEGROWTH = 5MB ) ;
GO

C. Creare un database specificando più file di dati e di log delle transazioni

Nell'esempio seguente viene creato il database Archive che include tre file di dati da 100-MB e due file del log delle transazioni da 100-MB. Il file primario è il primo file dell'elenco e viene specificato in modo esplicito con la parola chiave PRIMARY. I file di log delle transazioni vengono specificati dopo le parole chiave LOG ON. Si notino le estensioni utilizzate per i file nell'opzione FILENAME: .mdf per i file di dati primari, .ndf per i file di dati secondari e .ldf per i file di log delle transazioni. In questo esempio il database viene collocato nell'unità D: anziché con il database master.

USE master;
GO
CREATE DATABASE Archive
ON
PRIMARY
    (NAME = Arch1,
    FILENAME = 'D:\SalesData\archdat1.mdf',
    SIZE = 100MB,
    MAXSIZE = 200,
    FILEGROWTH = 20),
    ( NAME = Arch2,
    FILENAME = 'D:\SalesData\archdat2.ndf',
    SIZE = 100MB,
    MAXSIZE = 200,
    FILEGROWTH = 20),
    ( NAME = Arch3,
    FILENAME = 'D:\SalesData\archdat3.ndf',
    SIZE = 100MB,
    MAXSIZE = 200,
    FILEGROWTH = 20)
LOG ON
  (NAME = Archlog1,
    FILENAME = 'D:\SalesData\archlog1.ldf',
    SIZE = 100MB,
    MAXSIZE = 200,
    FILEGROWTH = 20),
  (NAME = Archlog2,
    FILENAME = 'D:\SalesData\archlog2.ldf',
    SIZE = 100MB,
    MAXSIZE = 200,
    FILEGROWTH = 20) ;
GO

D. Creare un database contenente filegroup

Nell'esempio seguente viene creato il database Sales che include i filegroup seguenti:

  • Il filegroup primario con i file Spri1_dat e Spri2_dat. Gli incrementi specificati nel parametro FILEGROWTH per tali file corrispondono al 15%.
  • Un filegroup SalesGroup1 con i file SGrp1Fi1 e SGrp1Fi2.
  • Un filegroup SalesGroup2 con i file SGrp2Fi1 e SGrp2Fi2.

In questo esempio i file di dati e di log vengono collocati in dischi diversi al fine di migliorare le prestazioni.

USE master;
GO
CREATE DATABASE Sales
ON PRIMARY
( NAME = SPri1_dat,
    FILENAME = 'D:\SalesData\SPri1dat.mdf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 15% ),
( NAME = SPri2_dat,
    FILENAME = 'D:\SalesData\SPri2dt.ndf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 15% ),
FILEGROUP SalesGroup1
( NAME = SGrp1Fi1_dat,
    FILENAME = 'D:\SalesData\SG1Fi1dt.ndf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5 ),
( NAME = SGrp1Fi2_dat,
    FILENAME = 'D:\SalesData\SG1Fi2dt.ndf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5 ),
FILEGROUP SalesGroup2
( NAME = SGrp2Fi1_dat,
    FILENAME = 'D:\SalesData\SG2Fi1dt.ndf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5 ),
( NAME = SGrp2Fi2_dat,
    FILENAME = 'D:\SalesData\SG2Fi2dt.ndf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5 )
LOG ON
( NAME = Sales_log,
    FILENAME = 'E:\SalesLog\salelog.ldf',
    SIZE = 5MB,
    MAXSIZE = 25MB,
    FILEGROWTH = 5MB ) ;
GO

E. Collegare un database

Nell'esempio seguente viene scollegato il database Archive creato nell'esempio D, quindi viene collegato tramite la clausola FOR ATTACH. Archive è stato definito in modo da avere più dati e file di log. Tuttavia, poiché il percorso dei file non è stato modificato dopo la creazione, deve essere specificato solo il file primario nella clausola FOR ATTACH. A partire da SQL Server 2005 (9.x), tutti i file full-text inclusi nel database che viene collegato verranno collegati insieme al database.

USE master;
GO
sp_detach_db Archive;
GO
CREATE DATABASE Archive
  ON (FILENAME = 'D:\SalesData\archdat1.mdf')
  FOR ATTACH ;
GO

F. Creare uno snapshot del database

L'esempio seguente crea lo snapshot del database sales_snapshot0600. Poiché uno snapshot del database è in sola lettura, non è possibile specificare un file di log. In conformità con la sintassi, viene specificato ogni file nel database di origine, mentre i filegroup non vengono specificati.

Il database di origine per questo esempio è il database Sales creato nell'esempio D.

USE master;
GO
CREATE DATABASE sales_snapshot0600 ON
    ( NAME = SPri1_dat, FILENAME = 'D:\SalesData\SPri1dat_0600.ss'),
    ( NAME = SPri2_dat, FILENAME = 'D:\SalesData\SPri2dt_0600.ss'),
    ( NAME = SGrp1Fi1_dat, FILENAME = 'D:\SalesData\SG1Fi1dt_0600.ss'),
    ( NAME = SGrp1Fi2_dat, FILENAME = 'D:\SalesData\SG1Fi2dt_0600.ss'),
    ( NAME = SGrp2Fi1_dat, FILENAME = 'D:\SalesData\SG2Fi1dt_0600.ss'),
    ( NAME = SGrp2Fi2_dat, FILENAME = 'D:\SalesData\SG2Fi2dt_0600.ss')
AS SNAPSHOT OF Sales ;
GO

G. Creare un database e specificare un nome e le opzioni per le regole di confronto

Nell'esempio seguente viene creato il database MyOptionsTest. Viene specificato un nome delle regole di confronto e le opzioni TRUSTYWORTHY e DB_CHAINING vengono impostate su ON.

USE master;
GO
IF DB_ID (N'MyOptionsTest') IS NOT NULL
DROP DATABASE MyOptionsTest;
GO
CREATE DATABASE MyOptionsTest
COLLATE French_CI_AI
WITH TRUSTWORTHY ON, DB_CHAINING ON;
GO
--Verifying collation and option settings.
SELECT name, collation_name, is_trustworthy_on, is_db_chaining_on
FROM sys.databases
WHERE name = N'MyOptionsTest';
GO

H. Collegare un catalogo full-text che è stato spostato

Nell'esempio seguente viene collegato il catalogo full-text AdvWksFtCat insieme ai file di log e di dati di AdventureWorks2022. In questo esempio, il catalogo full-text viene spostato dalla posizione predefinita in una nuova posizione c:\myFTCatalogs. I file di dati e di log rimangono nelle posizioni predefinite.

USE master;
GO
--Detach the AdventureWorks2022 database
sp_detach_db AdventureWorks2022;
GO
-- Physically move the full text catalog to the new location.
--Attach the AdventureWorks2022 database and specify the new location of the full-text catalog.
CREATE DATABASE AdventureWorks2022 ON
    (FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks2022_data.mdf'),
    (FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks2022_log.ldf'),
    (FILENAME = 'c:\myFTCatalogs\AdvWksFtCat')
FOR ATTACH;
GO

I. Creare un database che specifica un filegroup di righe e due filegroup FILESTREAM

Nell'esempio seguente viene creato il database FileStreamDB. Il database viene creato con un filegroup di righe e due filegroup FILESTREAM. Ogni filegroup contiene un file:

  • FileStreamDB_data contiene dati delle righe. Contiene un file, FileStreamDB_data.mdf, con il percorso predefinito.
  • FileStreamPhotos contiene dati FILESTREAM. Contiene due contenitori di dati FILESTREAM, FSPhotos nel percorso C:\MyFSfolder\Photos e FSPhotos2 nel percorso D:\MyFSfolder\Photos. È contrassegnato come filegroup FILESTREAM predefinito.
  • FileStreamResumes contiene dati FILESTREAM. Contiene un contenitore di dati FILESTREAM, ossia FSResumes nel percorso C:\MyFSfolder\Resumes.
USE master;
GO
-- Get the SQL Server data path.
DECLARE @data_path nvarchar(256);
SET @data_path = (SELECT SUBSTRING(physical_name, 1, CHARINDEX(N'master.mdf', LOWER(physical_name)) - 1)
      FROM master.sys.master_files
      WHERE database_id = 1 AND file_id = 1);

 -- Execute the CREATE DATABASE statement.
EXECUTE ('CREATE DATABASE FileStreamDB
ON PRIMARY
    (
    NAME = FileStreamDB_data
    ,FILENAME = ''' + @data_path + 'FileStreamDB_data.mdf''
    ,SIZE = 10MB
    ,MAXSIZE = 50MB
    ,FILEGROWTH = 15%
    ),
FILEGROUP FileStreamPhotos CONTAINS FILESTREAM DEFAULT
    (
    NAME = FSPhotos
    ,FILENAME = ''C:\MyFSfolder\Photos''
-- SIZE and FILEGROWTH should not be specified here.
-- If they are specified an error will be raised.
, MAXSIZE = 5000 MB
    ),
    (
      NAME = FSPhotos2
      , FILENAME = ''D:\MyFSfolder\Photos''
      , MAXSIZE = 10000 MB
     ),
FILEGROUP FileStreamResumes CONTAINS FILESTREAM
    (
    NAME = FileStreamResumes
    ,FILENAME = ''C:\MyFSfolder\Resumes''
    )
LOG ON
    (
    NAME = FileStream_log
    ,FILENAME = ''' + @data_path + 'FileStreamDB_log.ldf''
    ,SIZE = 5MB
    ,MAXSIZE = 25MB
    ,FILEGROWTH = 5MB
    )'
);
GO

J. Creare un database contenente un filegroup FILESTREAM con più file

Nell'esempio seguente viene creato il database BlobStore1. Il database viene creato con un filegroup di righe e un filegroup FILESTREAM, FS. Nel filegroup FILESTREAM sono contenuti due file, vale a dire FS1 e FS2. Successivamente il database viene modificato con l'aggiunta di un terzo file, FS3, al filegroup FILESTREAM.

USE master;
GO

CREATE DATABASE [BlobStore1]
CONTAINMENT = NONE
ON PRIMARY
(
    NAME = N'BlobStore1',
    FILENAME = N'C:\BlobStore\BlobStore1.mdf',
    SIZE = 100MB,
    MAXSIZE = UNLIMITED,
    FILEGROWTH = 1MB
),
FILEGROUP [FS] CONTAINS FILESTREAM DEFAULT
(  
    NAME = N'FS1',
    FILENAME = N'C:\BlobStore\FS1',
    MAXSIZE = UNLIMITED
),
(
    NAME = N'FS2',
    FILENAME = N'C:\BlobStore\FS2',
    MAXSIZE = 100MB
)
LOG ON
(
    NAME = N'BlobStore1_log',
    FILENAME = N'C:\BlobStore\BlobStore1_log.ldf',
    SIZE = 100MB,
    MAXSIZE = 1GB,
    FILEGROWTH = 1MB
);
GO

ALTER DATABASE [BlobStore1]
ADD FILE
(
    NAME = N'FS3',
    FILENAME = N'C:\BlobStore\FS3',
    MAXSIZE = 100MB
)
TO FILEGROUP [FS];
GO

Passaggi successivi

* Database SQL *

 

Database SQL

Panoramica

Nel database SQL di Azure questa istruzione può essere usata con un server SQL di Azure per creare un database singolo o un database in un pool elastico. Con questa istruzione si specificano il nome del database, le regole di confronto, le dimensioni massime, l'edizione, obiettivo di servizio e, se applicabile, il pool elastico per il nuovo database. Può anche essere usata per creare il database in un pool elastico. Inoltre, può essere usata per creare una copia del database in un altro server di database SQL.

Sintassi

Creazione di un database

Per altre informazioni sulle convenzioni della sintassi, vedere Convenzioni della sintassi Transact-SQL.

CREATE DATABASE database_name [ COLLATE collation_name ]
{
  (<edition_options> [, ...n])
}
[ WITH <with_options> [,..n]]
[;]

<with_options> ::=
{
  CATALOG_COLLATION = { DATABASE_DEFAULT | SQL_Latin1_General_CP1_CI_AS }
  | BACKUP_STORAGE_REDUNDANCY = { 'LOCAL' | 'ZONE' | 'GEO' | 'GEOZONE' }
  | LEDGER = {ON | OFF }
}

<edition_options> ::=
{

  MAXSIZE = { 100 MB | 500 MB | 1 ... 1024 ... 4096 GB }
  | ( EDITION = { 'Basic' | 'Standard' | 'Premium' | 'GeneralPurpose' | 'BusinessCritical' | 'Hyperscale' }
  | SERVICE_OBJECTIVE =
    { 'Basic' | 'S0' | 'S1' | 'S2' | 'S3' | 'S4'| 'S6'| 'S7'| 'S9'| 'S12'
      | 'P1' | 'P2' | 'P4'| 'P6' | 'P11' | 'P15'
      | 'BC_DC_n'
      | 'BC_Gen5_n' 
      | 'BC_M_n' 
      | 'GP_DC_n'
      | 'GP_Fsv2_n' 
      | 'GP_Gen5_n' 
      | 'GP_S_Gen5_n' 
      | 'HS_DC_n'
      | 'HS_Gen5_n'
      | 'HS_MOPRMS_n' 
      | 'HS_PRMS_n' 
      | { ELASTIC_POOL(name = <elastic_pool_name>) } })
}

Copiare un database

CREATE DATABASE database_name
    AS COPY OF [source_server_name.] source_database_name
    [ ( SERVICE_OBJECTIVE =
      { 'Basic' |'S0' | 'S1' | 'S2' | 'S3'| 'S4'| 'S6'| 'S7'| 'S9'| 'S12'
      | 'P1' | 'P2' | 'P4'| 'P6' | 'P11' | 'P15'
      | 'GP_Gen5_n'
      | 'GP_Fsv2_n'
      | 'GP_S_Gen5_n'
      | 'BC_Gen5_n'
      | 'BC_M_n'
      | 'HS_Gen5_n'
      | 'HS_PRMS_n'
      | 'HS_MOPRMS_n'
      | { ELASTIC_POOL(name = <elastic_pool_name>) } })
   ]
   [ WITH BACKUP_STORAGE_REDUNDANCY = { 'LOCAL' | 'ZONE' | 'GEO' } ]
[;]

Argomenti

database_name

Nome del nuovo database. Il nome deve essere univoco in SQL Server e conforme alle regole di SQL Server per gli identificatori. Per altre informazioni, vedere Identificatori.

Collation_name

Specifica le regole di confronto predefinite per i dati del database. Specificare CATALOG_COLLATION per i metadati di sistema, ad esempio identificatori di oggetto.

È possibile usare nomi di regole di confronto di Windows o SQL. Se non vengono specificate, al database vengono assegnate le regole di confronto predefinite, ovvero SQL_Latin1_General_CP1_CI_AS.

Per altre informazioni sui nomi delle regole di confronto Windows e SQL, vedere COLLATE (Transact-SQL).

CATALOG_COLLATION

Specifica le regole di confronto predefinite per il catalogo di metadati. L'argomento CATALOG_COLLATION è disponibile solo durante la creazione del database e non può essere modificato dopo la creazione.

Per impostazione predefinita, il catalogo dei metadati per i nomi degli oggetti di sistema viene confrontato con le regole di confronto SQL_Latin1_General_CP1_CI_AS . Questa è l'impostazione predefinita database SQL di Azure se CATALOG_COLLATION non è specificato.

DATABA edizione Standard_DEFAULT specifica che il catalogo dei metadati utilizzato per le viste di sistema e le tabelle di sistema deve essere confrontato con le regole di confronto per il database. Se si desidera che gli identificatori di oggetto nei metadati di sistema seguano le stesse regole di confronto dei dati, è necessario creare il database WITH CATALOG_COLLATION = DATABASE_DEFAULT.

  • È possibile che si desiderino regole di confronto diverse per i dati e gli identificatori di oggetto. L'esempio seguente crea il database con regole di confronto con distinzione tra maiuscole e minuscole per i dati di riga, ma userà le regole di confronto predefinite SQL_Latin1_General_CP1_CI_AS senza distinzione tra maiuscole e minuscole per gli identificatori di oggetto.

    CREATE DATABASE [different-collations] COLLATE SQL_Latin1_General_CP1_CS_AS
    
  • Se si desidera che i metadati di dati e di sistema usino le stesse regole di confronto, specificare WITH CATALOG_COLLATION = DATABASE_DEFAULT. Nell'esempio seguente viene creato il database con regole di confronto con distinzione tra maiuscole e minuscole, che verranno usate per gli identificatori di oggetto.

    CREATE DATABASE [same-collations] COLLATE SQL_Latin1_General_CP1_CS_AS
    WITH CATALOG_COLLATION = DATABASE_DEFAULT
    

BACKUP_STORAGE_REDUNDANCY = ['LOCAL' | 'ZONE' | 'GEO']

Specifica la modalità di replica dei backup per il ripristino temporizzato e la conservazione a lungo termine di un database. Il ripristino geografico o la possibilità di eseguire il ripristino dall'interruzione a livello di area è disponibile solo quando il database viene creato con GEO ridondanza dell'archiviazione di backup. Se non specificato in modo esplicito, i database creati con T-SQL usano l'archivio di backup con ridondanza geografica.

Per applicare la residenza dei dati quando si crea un database usando T-SQL, usare LOCAL o ZONE come input per il parametro BACKUP_STORAGE_REDUNDANCY.

LEDGER = {ON | OFF}

Se l'impostazione è ON, crea un database di libro mastro, in cui l'integrità di tutti i dati utente è protetta. In un database di libro mastro è possibile creare solo tabelle del libro mastro. Il valore predefinito è OFF. Il valore dell'opzione LEDGER non può essere modificato dopo la creazione del database. Per altre informazioni, vedere Configurare un database di libro mastro.

MAXSIZE

Specifica le dimensioni massime del database. MAXSIZE deve essere valido per l'edizione specificata (livello di servizio).

Di seguito sono riportati i valori MAXSIZE supportati e le impostazioni predefinite (D) per i livelli di servizio.

Nota

L'argomento MAXSIZE non è applicabile ai singoli database nel livello di servizio Hyperscale. I database di livello Hyperscale possono crescere in base alle necessità, fino a 100 TB. Il servizio database SQL aggiunge automaticamente l'archiviazione: non è necessaria impostare le dimensioni massime.

Modello DTU per database singoli e in pool in un server di database SQL

MAXSIZE Base S0-S2 S3-S12 P1-P6 P11-P15
100 MB
500 MB
1 GB
2 GB √ (P)
5 GB N/D
10 GB N/D
20 GB N/D
30 GB N/D
40 GB N/D
50 GB N/D
100 GB N/D
150 GB N/D
200 GB N/D
250 GB N/D √ (P) √ (P)
300 GB N/D N/D
400 GB N/D N/D
500 GB N/D N/D √ (P)
750 GB N/D N/D
1024 GB N/D N/D √ (P)
Da 1024 GB fino a 4096 GB con incrementi di 256 GB* N/D N/D N/D N/D

* P11 e P15 consentono un valore massimo di MAXSIZE pari a 4 TB. Le dimensioni predefinite sono 1024 GB. P11 e P15 possono usare fino a 4 TB di spazio di archiviazione incluso senza addebiti aggiuntivi. Nel livello Premium, MAXSIZE maggiore di 1 TB è attualmente disponibile nelle seguenti aree: Stati Uniti orientali 2, Stati Uniti occidentali, US Gov Virginia, Europa occidentale, Germania centrale, Asia sud-orientale, Giappone orientale, Australia orientale, Canada centrale e Canada orientale. Per altri dettagli relativi ai limiti delle risorse per il modello DTU, vedere DTU resource limits (Limiti delle risorse DTU).

Il valore MAXSIZE per il modello DTU, se specificato, deve essere un valore valido presente nella tabella precedente per il livello di servizio.

Per limiti come le dimensioni massime dei dati e tempdb le dimensioni nel modello di acquisto vCore, vedere gli articoli relativi ai limiti delle risorse per i database singoli o i limiti delle risorse per i pool elastici.

Se non viene impostato alcun valore MAXSIZE quando si usa il modello vCore, il valore predefinito è 32 GB. Per altri dettagli relativi ai limiti delle risorse per il modello vCore, vedere Limiti delle risorse vCore.

EDITION

Specifica il livello del servizio del database.

Database singoli e in pool. I valori disponibili sono: 'Basic', 'Standard', 'Premium', 'GeneralPurpose', 'BusinessCritical' e 'Hyperscale'.

Le seguenti regole vengono applicate agli argomenti MAXSIZE ed EDITION:

  • Se il valore di EDITION è specificato e il valore di MAXSIZE viene omesso, viene utilizzato il valore predefinito dell'edizione. Se ad esempio EDITION è impostato su Standard e MAXSIZE non è specificato, il valore di MAXSIZE viene automaticamente impostato su 250 MB.
  • Se né MAXSIZE né EDITION sono specificati, EDITION viene impostato su GeneralPurpose e MAXSIZE viene impostato su 32 GB.

SERVICE_OBJECTIVE

Specifica le dimensioni di calcolo e l'obiettivo di servizio.

  • Per il modello di acquisto DTU: S0, S1S2, S3, S4, , S7S6, S12, P1P11S9P2P4P6P15
  • Per il modello di acquisto vCore più recente, scegliere il livello e specificare il numero di vCore da un elenco predefinito di valori, dove il numero di vCore è n. Fare riferimento ai limiti delle risorse per i database singoli o i limiti delle risorse per i pool elastici.
    • Ad esempio:
    • GP_Gen5_8 per il calcolo della serie Standard per utilizzo generico (Gen5), 8 vCore.
    • GP_S_Gen5_8 per il calcolo Serie Standard serverless per utilizzo generico (Gen5), 8 vCore.
    • HS_Gen5_8 per Hyperscale - calcolo con provisioning - serie standard (Gen5), 8 vCore.

Per le descrizioni degli obiettivi di servizio e altre informazioni su dimensioni, edizioni e combinazioni di obiettivi di servizio, vedere Azure SQL Database Service Tiers (Livelli di servizio del database SQL di Azure). Se SERVICE_OBJECTIVE non è supportato da EDITION, viene visualizzato un errore. Per cambiare il valore di SERVICE_OBJECTIVE da un livello a un altro (ad esempio da S1 a P1), è necessario modificare anche il valore EDITION. Il supporto per gli obiettivi di servizio PRS è stato rimosso.

ELASTIC_POOL (name = <elastic_pool_name>)

Si applica a: Solo database singoli e in pool. Non è applicabile ai database nel livello di servizio Hyperscale. Per creare un nuovo database in un pool di database elastico, impostare SERVICE_OBJECTIVE del database su ELASTIC_POOL e specificare il nome del pool. Per altre informazioni, vedere Creare e gestire un pool elastico in un database SQL.

AS COPY OF [source_server_name.]source_database_name

Si applica a: Solo database singoli e in pool. Per la copia di un database nello stesso server di database SQL o in un server diverso.

source_server_name Nome del server di database SQL in cui si trova il database di origine. Questo parametro è facoltativo se il database di origine e il database di destinazione devono trovarsi nello stesso server di database SQL.

Nota

l'argomento AS COPY OF non supporta nomi di dominio univoci completi. In altre parole, se il nome di dominio completo del server è serverName.database.windows.net, usare solo serverName durante la copia del database.

nome_database_di_origine

Nome del database di cui eseguire la copia.

Osservazioni:

I database nel database SQL di Azure hanno diverse impostazioni predefinite impostate al momento della creazione del database. Per altre informazioni su queste impostazioni predefinite, vedere l'elenco di valori in DATABASEPROPERTYEX.

MAXSIZE consente di limitare le dimensioni del database. Se le dimensioni del database raggiungono il valore di MAXSIZE, viene visualizzato il codice di errore 40544. In questo caso, non è possibile inserire o aggiornare dati, né creare nuovi oggetti quali tabelle, stored procedure, viste e funzioni. È tuttavia ancora possibile leggere ed eliminare dati, troncare tabelle, eliminare tabelle e indici e ricompilare indici. È quindi possibile aggiornare MAXSIZE a un valore maggiore delle dimensioni correnti del database o eliminare alcuni dati per liberare spazio di archiviazione. Può verificarsi un ritardo fino a quindici minuti prima di poter inserire nuovi dati.

Per cambiare le dimensioni, l'edizione o i valori degli obiettivi di servizio in un secondo momento, usare ALTER DATABASE (database SQL di Azure).

Copie di database

Si applica a: Solo database singoli e in pool.

La copia di un database tramite l'istruzione CREATE DATABASE è un'operazione asincrona. Non è quindi necessaria una connessione al server di database SQL per tutta la durata del processo di copia. L'istruzione CREATE DATABASE restituisce il controllo all'utente dopo la creazione della voce in sys.databases e prima che l'operazione di copia del database venga completata. In altre parole, l'istruzione CREATE DATABASE ha esito positivo quando la copia del database è ancora in corso.

  • Monitoraggio del processo di copia in un server di database SQL: eseguire una query sulla colonna percentage_complete o replication_state_desc in dm_database_copies o sulla colonna state nella vista sys.databases. È possibile usare anche la visualizzazione sys.dm_operation_status perché restituisce lo stato delle operazioni del database, inclusa la copia del database.

Al termine del processo di copia, il database di destinazione è transazionalmente coerente con il database di origine.

La sintassi e le regole semantiche seguenti si applicano all'utilizzo dell'argomento AS COPY OF:

  • Il nome del server di origine e il nome del server per la destinazione della copia possono essere uguali o diversi. Se corrispondono, questo parametro è facoltativo e il contesto del server della sessione corrente viene usato per impostazione predefinita.
  • I nomi dei database di origine e di destinazione devono essere specificati, univoci e conformi alle regole di SQL Server per gli identificatori. Per altre informazioni, vedere Identificatori.
  • L'istruzione CREATE DATABASE deve essere eseguita nel contesto del database master del server di database SQL in cui il nuovo database verrà creato.
  • Al termine della copia, il database di destinazione deve essere gestito come database indipendente. È possibile eseguire le istruzioni ALTER DATABASE e DROP DATABASE per il nuovo database indipendentemente dal database di origine. È inoltre possibile copiare il nuovo database in un altro nuovo database.
  • Mentre è in corso la copia del database, è possibile continuare ad accedere al database di origine.

Per altre informazioni, vedere Create a copy of an Azure SQL database using Transact-SQL (Creare una copia di un database SQL di Azure mediante Transact-SQL).

Importante

Per impostazione predefinita, la copia del database viene creata con la stessa ridondanza dell'archivio di backup del database di origine.

Autorizzazioni

Per creare un database, l'account di accesso deve essere una delle entità seguenti:

  • Account di accesso principale di livello server
  • Amministratore di Microsoft Entra per il server logico in Azure
  • Un account di accesso membro del ruolo del database dbmanager

Requisiti aggiuntivi per l'uso della sintassi CREATE DATABASE ... AS COPY OF: l'account di accesso che esegue l'istruzione sul server locale deve anche essere almeno un account db_owner nel server di origine. Se l'account di accesso è basato sull'autenticazione di SQL Server, l'account di accesso che esegue l'istruzione nel server locale deve avere un account di accesso corrispondente nel server di database SQL di origine, con nome e password identici.

Esempi

Esempio semplice

Esempio semplice per la creazione di un database.

CREATE DATABASE TestDB1;

Esempio semplice con Edition

Esempio semplice per la creazione di un database per utilizzo generico.

CREATE DATABASE TestDB2
( EDITION = 'GeneralPurpose' );

Esempio con opzioni aggiuntive

Esempio che usa varie opzioni.

CREATE DATABASE hito
COLLATE Japanese_Bushu_Kakusu_100_CS_AS_KS_WS
( MAXSIZE = 500 MB, EDITION = 'GeneralPurpose', SERVICE_OBJECTIVE = 'GP_Gen5_8' ) ;

Creare una copia del database

Esempio di creazione di una copia di un database.

Si applica a: Solo database singoli e in pool.

CREATE DATABASE escuela
AS COPY OF school;

Creare un database in un pool elastico

Crea un nuovo database nel pool denominato S3M100:

Si applica a: Solo database singoli e in pool.

CREATE DATABASE db1 ( SERVICE_OBJECTIVE = ELASTIC_POOL ( name = S3M100 ) ) ;

Creare una copia di un database in un altro server logico

L'esempio seguente crea una copia del database db_original denominata db_copy nelle dimensioni di calcolo P2 (obiettivo di servizio) per un database singolo. Questo vale indipendentemente dal fatto che db_original si trovi in un pool elastico o nelle dimensioni di calcolo (obiettivo di servizio) per un database singolo.

Si applica a: Solo database singoli e in pool.

CREATE DATABASE db_copy
  AS COPY OF ozabzw7545.db_original ( SERVICE_OBJECTIVE = 'P2' );

L'esempio seguente crea una copia del database db_original denominata db_copy in un pool elastico denominato ep1. Questo vale indipendentemente dal fatto che db_original si trovi in un pool elastico o nelle dimensioni di calcolo (obiettivo di servizio) per un database singolo. Se db_original si trova in un pool elastico con un nome diverso, la copia db_copy verrà comunque creata in ep1.

Si applica a: Solo database singoli e in pool.

CREATE DATABASE db_copy
  AS COPY OF ozabzw7545.db_original
  (SERVICE_OBJECTIVE = ELASTIC_POOL( name = ep1 ) ) ;

Creare un database con il valore di regole di confronto del catalogo specificato

L'esempio seguente imposta le regole di confronto del catalogo su DATABASE_DEFAULT durante la creazione del database. In questo modo le regole di confronto del catalogo vengono impostate in modo da corrispondere alle regole di confronto del database.

CREATE DATABASE TestDB3 COLLATE Japanese_XJIS_140 (MAXSIZE = 100 MB, EDITION = 'Basic')
  WITH CATALOG_COLLATION = DATABASE_DEFAULT

Creare database usando la ridondanza della zona per i backup

Nell'esempio seguente viene impostata la ridondanza della zona per i backup del database. Sia i backup per il ripristino temporizzato che i backup con conservazione a lungo termine (se configurati) useranno la stessa ridondanza dell'archivio di backup.

CREATE DATABASE test_zone_redundancy 
  WITH BACKUP_STORAGE_REDUNDANCY = 'ZONE';

Creare un database di libro mastro

CREATE DATABASE MyLedgerDB ( EDITION = 'GeneralPurpose' ) WITH LEDGER = ON;

Passaggi successivi

* Istanza gestita di SQL *

 

Istanza gestita di SQL di Azure

Panoramica

In Istanza gestita di SQL di Azure questa istruzione viene usata per creare un database. Quando si crea un database in un'istanza gestita, si specificano il nome del database e le regole di confronto.

Sintassi

Per altre informazioni sulle convenzioni della sintassi, vedere Convenzioni della sintassi Transact-SQL.

CREATE DATABASE database_name [ COLLATE collation_name ]
[ WITH <with_options> [,..n]]
[;]

<with_options> ::=
{
  LEDGER = { ON | OFF }
}

Importante

Per aggiungere file o configurare l'indipendenza per un database in un'istanza gestita, usare l'istruzione ALTER DATABASE.

Argomenti

database_name

Nome del nuovo database. Il nome deve essere univoco in SQL Server e conforme alle regole di SQL Server per gli identificatori. Per altre informazioni, vedere Identificatori.

Collation_name

Specifica le regole di confronto predefinite per il database. È possibile usare nomi di regole di confronto di Windows o SQL. Se non vengono specificate, al database vengono assegnate le regole di confronto predefinite, ovvero SQL_Latin1_General_CP1_CI_AS.

Per altre informazioni sui nomi delle regole di confronto Windows e SQL, vedere COLLATE (Transact-SQL).

LEDGER = {ON | OFF}

Se l'impostazione è ON, crea un database di libro mastro, in cui l'integrità di tutti i dati utente è protetta. In un database di libro mastro è possibile creare solo tabelle del libro mastro. Il valore predefinito è OFF. Il valore dell'opzione LEDGER non può essere modificato dopo la creazione del database. Per altre informazioni, vedere Configurare un database di libro mastro.

Osservazioni:

I database nel database SQL di Azure hanno diverse impostazioni predefinite impostate al momento della creazione del database. Per altre informazioni su queste impostazioni predefinite, vedere l'elenco di valori in DATABASEPROPERTYEX.

Importante

L'istruzione CREATE DATABASE deve essere l'unica istruzione in un batch Transact-SQL.

CREATE DATABASE prevede le limitazioni seguenti:

  • Non è possibile definire file e filegroup.

  • WITHle opzioni non sono supportate, ad eccezione di WITH LEDGER.

    Suggerimento

    Come soluzione alternativa, usare ALTER DATABASE dopo CREATE DATABASE per impostare le opzioni di database e aggiungere i file.

Autorizzazioni

Per creare un database, l'account di accesso deve essere uno dei seguenti:

  • Account di accesso principale di livello server
  • Amministratore di Microsoft Entra per per il server logico in Azure
  • Un account di accesso membro del ruolo del database dbcreator

Esempi

Esempio semplice

Esempio semplice per la creazione di un database.

CREATE DATABASE TestDB1;

Creare un database di libro mastro

CREATE DATABASE MyLedgerDB WITH LEDGER = ON;

Passaggi successivi

* Azure Synapse
Analytics *

 

Azure Synapse Analytics

Panoramica

In Azure Synapse questa istruzione può essere usata con un server database SQL di Azure per creare un pool SQL dedicato. Con questa istruzione è possibile specificare il nome del database, le regole di confronto, le dimensioni massime, l'edizione e l'obiettivo di servizio.

  • CREATE DATABA edizione Standard è supportato per i pool SQL dedicati autonomi (in precedenza SQL Data Warehouse) usando i livelli di servizio Gen2.
  • CREATE DATABA edizione Standard non è supportato per i pool SQL dedicati in un'area di lavoro di Azure Synapse Analytics. Usare invece il portale di Azure.
  • L'istruzione CREATE DATABASE è supportata per i pool SQL serverless in Azure Synapse Analytics.

Sintassi

Per altre informazioni sulle convenzioni della sintassi, vedere Convenzioni della sintassi Transact-SQL.

CREATE DATABASE database_name [ COLLATE collation_name ]
(
    [ MAXSIZE = {
          250 | 500 | 750 | 1024 | 5120 | 10240 | 20480 | 30720
        | 40960 | 51200 | 61440 | 71680 | 81920 | 92160 | 102400
        | 153600 | 204800 | 245760
      } GB ,
    ]
    EDITION = 'datawarehouse',
    SERVICE_OBJECTIVE = {
          'DW100c' | 'DW200c' | 'DW300c' | 'DW400c' | 'DW500c'
        | 'DW1000c' | 'DW1500c' | 'DW2000c' | 'DW2500c' | 'DW3000c' | 'DW5000c'
        | 'DW6000c' | 'DW7500c' | 'DW10000c' | 'DW15000c' | 'DW30000c'
    }
)
[;]

Argomenti

database_name

Nome del nuovo database. Questo nome deve essere univoco nel server SQL, che può ospitare entrambi i database in database SQL di Azure e nei database di Azure Synapse Analytics e rispettare le regole di SQL Server per gli identificatori. Per altre informazioni, vedere Identificatori.

collation_name

Specifica le regole di confronto predefinite per il database. È possibile usare nomi di regole di confronto di Windows o SQL. Se non vengono specificate, al database vengono assegnate le regole di confronto predefinite, ovvero SQL_Latin1_General_CP1_CI_AS.

Per altre informazioni sui nomi delle regole di confronto Windows e SQL, vedere COLLATE (Transact-SQL).

MAXSIZE

Il valore predefinito è 245.760 GB (240 TB).

Si applica a: ottimizzato per il calcolo di prima generazione

Dimensioni massime consentite per il database. Le dimensioni del database non possono superare il valore di MAXSIZE.

Si applica a: ottimizzato per il calcolo di seconda generazione

Dimensioni massime consentite per i dati rowstore nel database. Le dimensioni dei dati archiviati nelle tabelle rowstore, nel deltastore di un indice columnstore o in un indice non cluster in un indice columnstore cluster non possono superare MAXSIZE. I dati compressi in formato columnstore non hanno un limite di dimensioni e non sono limitati dal valore MAXSIZE.

EDITION

Specifica il livello del servizio del database. Per Azure Synapse Analytics usare datawarehouse.

SERVICE_OBJECTIVE

Specifica le dimensioni di calcolo (obiettivo di servizio). I livelli di servizio Gen2 sono misurati in unità Data Warehouse a elevato utilizzo di calcolo (DWU a elevato utilizzo di calcolo), ad esempio DW2000c. I livelli di servizio Gen1 sono misurati in DWU, ad esempio DW2000. Per altre informazioni sugli obiettivi di servizio per Azure Synapse, vedere Unità Data Warehouse (DWU). Gli obiettivi di servizio Gen1 (non più elencati) non sono più supportati. È possibile che venga visualizzato un errore: Azure SQL Data Warehouse Gen1 has been deprecated in this region. Please use SQL Analytics in Azure Synapse.

Osservazioni:

Usare DATABASEPROPERTYEX per visualizzare le proprietà del database.

Usare ALTER DATABASE - Azure Synapse Analytics per cambiare le dimensioni massime o i valori degli obiettivi di servizio in un secondo momento.

Azure Synapse è impostato su COMPATIBILITY_LEVEL 130 e non può essere modificato. Per altre informazioni, vedere Miglioramento delle prestazioni delle query con il livello di compatibilità 130 nel database SQL di Azure.

Autorizzazioni

Autorizzazioni obbligatorie:

  • Accesso principale di livello server (creato dal processo di provisioning) oppure
  • Membro del ruolo del database dbmanager.

Gestione degli errori

Se le dimensioni del database raggiungono il valore MAXSIZE, viene visualizzato il codice di errore 40544. In questo caso non è possibile inserire e aggiornare dati, né creare nuovi oggetti quali tabelle, stored procedure, viste e funzioni. È ancora possibile leggere ed eliminare dati, troncare tabelle, eliminare tabelle e indici e ricompilare indici. È quindi possibile aggiornare MAXSIZE a un valore maggiore delle dimensioni correnti del database o eliminare alcuni dati per liberare spazio di archiviazione. Può verificarsi un ritardo fino a quindici minuti prima di poter inserire nuovi dati.

Limitazioni e restrizioni

Per creare un nuovo database, è necessario essere connessi al database master.

L'istruzione CREATE DATABASE deve essere l'unica istruzione in un batch Transact-SQL.

Non è possibile modificare le regole di confronto del database dopo la creazione del database stesso.

Esempi: Azure Synapse Analytics

R. Esempio semplice

Esempio semplice per la creazione di un pool SQL dedicato autonomo (in precedenza SQL Data Warehouse). In questo modo viene creato il database con le dimensioni massime più piccole (10.240 GB), le regole di confronto predefinite (SQL_Latin1_General_CP1_CI_AS) e l'obiettivo di servizio Gen2 più piccolo (DW100c).

CREATE DATABASE TestDW
(EDITION = 'datawarehouse', SERVICE_OBJECTIVE='DW100c');

B. Creare un database del data warehouse con tutte le opzioni

Esempio di creazione di un pool SQL dedicato autonomo da 10 terabyte (in precedenza SQL Data Warehouse).

CREATE DATABASE TestDW COLLATE Latin1_General_100_CI_AS_KS_WS
(MAXSIZE = 10240 GB, EDITION = 'datawarehouse', SERVICE_OBJECTIVE = 'DW1000c');

C. Esempio semplice in un pool SQL serverless di Synapse Analytics

Viene creato il database nel pool serverless, specificando le regole di confronto (Latin1_General_100_CI_AS_KS_WS).

CREATE DATABASE TestDW COLLATE Latin1_General_100_CI_AS_KS_WS

Passaggi successivi

* Piattaforma di strumenti
analitici (PDW) *

 

Sistema della piattaforma di analisi

Panoramica

Nella piattaforma di strumenti analitici questa istruzione viene usata per creare un nuovo database in un'appliance della piattaforma stessa. Usare questa istruzione per creare tutti i file associati a un database di appliance e per impostare le opzioni relative alle dimensioni massime e all'aumento automatico per le tabelle e i log delle transazioni del database stesso.

Sintassi

Per altre informazioni sulle convenzioni della sintassi, vedere Convenzioni della sintassi Transact-SQL.

CREATE DATABASE database_name
WITH (
    [ AUTOGROW = ON | OFF , ]
    REPLICATED_SIZE = replicated_size [ GB ] ,
    DISTRIBUTED_SIZE = distributed_size [ GB ] ,
    LOG_SIZE = log_size [ GB ] )
[;]

Argomenti

database_name

Nome del nuovo database. Per altre informazioni sui nomi di database consentiti, vedere le sezioni relative alle regole di denominazione degli oggetti e ai nomi di database riservati nella documentazione del prodotto piattaforma di strumenti analitici (PDW).

AUTOGROW = ON | OFF

Specifica se i parametri replicated_size, distributed_size e log_size per il database possono aumentare automaticamente in base alle esigenze oltre le dimensioni specificate. Il valore predefinito è OFF.

Se AUTOGROW corrisponde a ON, replicated_size, distributed_size e log_size aumenteranno secondo necessità (non in blocchi delle dimensioni specificate inizialmente) a ogni inserimento o aggiornamento di dati o quando vengono eseguite altre azioni che richiedono più spazio di archiviazione di quanto ne sia già stato allocato.

Se AUTOGROW corrisponde a OFF, le dimensioni non aumenteranno automaticamente. La piattaforma di strumenti analitici (PDW) restituisce un errore quando si cerca di eseguire un'azione che richiede l'aumento di replicated_size, distributed_size o log_size oltre il valore specificato.

L'impostazione di AUTOGROW (ON o OFF) si applica a tutte le dimensioni. Non è ad esempio possibile impostare AUTOGROW su ON per log_size ma non per replicated_size.

replicated_size [ GB ]

Numero positivo. Imposta le dimensioni (in GB, con un valore intero o decimale) per lo spazio totale allocato per le tabelle replicate e per i dati corrispondenti in ogni nodo di calcolo. Per i requisiti relativi ai valori minimo e massimo di replicated_size, vedere la sezione corrispondente nella documentazione del prodotto piattaforma di strumenti analitici (PDW).

Se AUTOGROW corrisponde a ON, è consentito l'aumento delle tabelle replicate oltre il limite impostato.

Se AUTOGROW corrisponde a OFF, verrà restituito un errore se un utente tenta di creare una nuova tabella replicata, di inserire dati in una tabella replicata esistente o di aggiornare quest'ultima in modo tale da aumentarne le dimensioni oltre il valore di replicated_size.

distributed_size [ GB ]

Numero positivo. Dimensioni (in GB, con un valore intero o decimale) per lo spazio totale allocato per le tabelle distribuite e per i dati corrispondenti nell'intera appliance. Per i requisiti relativi ai valori minimo e massimo di distributed_size, vedere la sezione corrispondente nella documentazione del prodotto piattaforma di strumenti analitici (PDW).

Se AUTOGROW corrisponde a ON, è consentito l'aumento delle tabelle distribuite oltre il limite impostato.

Se AUTOGROW corrisponde a OFF, verrà restituito un errore se un utente tenta di creare una nuova tabella distribuita, di inserire dati in una tabella distribuita esistente o di aggiornare quest'ultima in modo tale da aumentarne le dimensioni oltre il valore di distributed_size.

log_size [ GB ]

Numero positivo. Dimensioni (in GB, con un valore intero o decimale) per il log delle transazioni nell'intera appliance.

Per i requisiti relativi ai valori minimo e massimo di log_size, vedere la sezione corrispondente nella documentazione del prodotto piattaforma di strumenti analitici (PDW).

Se AUTOGROW corrisponde a ON, è consentito l'aumento del file di log oltre il limite impostato. Usare l'istruzione DBCC SHRINKLOG (Azure Synapse Analytics) per ridurre le dimensioni dei file di log fino alle dimensioni originali.

Se AUTOGROW corrisponde a OFF, verrà restituito un errore per qualsiasi azione che aumenti le dimensioni del log in un singolo nodo di calcolo oltre il valore di log_size.

Autorizzazioni

Richiede l'autorizzazione CREATE ANY DATABASE nel databasemaster o l'appartenenza al ruolo predefinito del server sysadmin.

Nell'esempio seguente viene fornita l'autorizzazione per creare un database per l'utente del database Fay.

USE master;
GO
GRANT CREATE ANY DATABASE TO [Fay];
GO

Osservazioni:

I database vengono creati con il livello di compatibilità 120, corrispondente al livello di compatibilità per SQL Server 2014 (12.x). In questo modo il database sarà in grado di usare tutte le funzionalità di SQL Server 2014 (12.x) usate dalla piattaforma PDW.

Limitazioni e restrizioni

L'istruzione CREATE DATABASE non è consentita in una transazione esplicita. Per altre informazioni, vedere Istruzioni.

Per informazioni sui vincoli minimo e massimo nei database, vedere la sezione corrispondente nella documentazione del prodotto piattaforma di strumenti analitici (PDW).

Al momento della creazione di un database, deve essere disponibile spazio sufficiente in ogni nodo di calcolo per allocare il totale combinato delle dimensioni seguenti:

  • Database SQL Server con tabelle di dimensioni corrispondenti a replicated_table_size.
  • Database SQL Server con tabelle di dimensioni corrispondenti a (distributed_table_size/numero di nodi di calcolo).
  • SQL Server registra le dimensioni di (log_size/numero di nodi di calcolo).

Blocco

Consente di acquisire un blocco condiviso per l'oggetto DATABASE.

Metadati UFX

Al termine di questa operazione, nelle viste di metadati sys.databases e sys.objects viene visualizzata una voce per questo database.

Esempi: Piattaforma di strumenti analitici (PDW)

R. Esempi di creazione di database di base

L'esempio seguente crea il database mytest con un'allocazione dello spazio di archiviazione pari a 100 GB per ogni nodo di calcolo per le tabelle replicate, 500 GB per appliance per le tabelle distribuite e 100 GB per appliance per il log delle transazioni. In questo esempio, AUTOGROW è OFF per impostazione predefinita.

CREATE DATABASE mytest
  WITH
    (REPLICATED_SIZE = 100 GB,
    DISTRIBUTED_SIZE = 500 GB,
    LOG_SIZE = 100 GB );

L'esempio seguente crea il database mytest con gli stessi parametri dell'esempio precedente, ad eccezione di AUTOGROW, che è ON. Ciò consente al database di aumentare oltre i parametri di dimensione specificati.

CREATE DATABASE mytest
  WITH
    (AUTOGROW = ON,
    REPLICATED_SIZE = 100 GB,
    DISTRIBUTED_SIZE = 500 GB,
    LOG_SIZE = 100 GB);

B. Creare un database con dimensioni in GB parziali

L'esempio seguente crea il database mytest con AUTOGROW OFF, un'allocazione dello spazio di archiviazione pari a 1,5 GB per ogni nodo di calcolo per le tabelle replicate, 5,25 GB per appliance per le tabelle distribuite e 10 GB per appliance per il log delle transazioni.

CREATE DATABASE mytest
  WITH
    (REPLICATED_SIZE = 1.5 GB,
    DISTRIBUTED_SIZE = 5.25 GB,
    LOG_SIZE = 10 GB);

Passaggi successivi