Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Crea un nuovo database.
Selezionare una delle schede seguenti per la sintassi, gli argomenti, le osservazioni, le autorizzazioni e gli esempi per una versione SQL specifica con cui si sta lavorando.
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 = 'path-to-directory-on-a-DAX-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 un massimo di 128 caratteri, a meno che non venga specificato un nome logico per il file di log. Se non viene specificato un nome di file di log logico, SQL Server genera il logical_file_name e il os_file_name per il log aggiungendo 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 il nome del file di dati non è specificato, 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 se seguito da un elenco delimitato da virgole di elementi che definiscono i file di <filespec> dati per il filegroup primario. L'elenco dei file nel filegroup primario può essere seguito da un elenco facoltativo delimitato da virgole di <filegroup> elementi che definiscono i filegroup utente e i relativi file.
PRIMARIO
Specifica che l'elenco associato <filespec> definisce il file primario. Il primo file specificato nella <filespec> voce del filegroup primario diventa il file primario. Un database può includere un solo file primario. Per altre informazioni, vedere File di database e filegroup.
Se PRIMARY non viene specificato, il primo file elencato nell'istruzione CREATE DATABASE diventa il file primario.
DICHIARAZIONE DI SOGGIORNO
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 delimitato da virgole di elementi che definiscono i file di <filespec> registro. Se LOG ON non viene specificato, viene creato automaticamente un file di log, con dimensioni pari al 25% della somma delle dimensioni di tutti i file di dati per il database o 512 KB, a ogni livello maggiore. Questo file viene posizionato nel percorso predefinito del file di log. Per informazioni su questo percorso, vedere Visualizzare o modificare i percorsi predefiniti per i file di dati e di log.
LOG ON non può essere specificato in uno snapshot del database.
FASCICOLAZIONE 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 FOR ATTACH clausole o FOR ATTACH_REBUILD_LOG . Per informazioni su come modificare le regole di confronto di un database collegato, vedere Impostare o modificare le regole di confronto del database.
Per altre informazioni sui nomi delle regole di confronto di 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 del database indipendente.
CON <opzione>
<filestream_option>
NON_TRANSACTED_ACCESS = { SPENTO | READ_ONLY | COMPLETO }
Si applica a: SQL Server 2012 (11.x) e versioni successive
Specifica il livello di accesso FILESTREAM non transazionale al database.
valore Descrizione OFFL'accesso non transazionale è disabilitato. READONLYI dati FILESTREAM di questo database possono essere letti da processi non transazionali. FULLL'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 suPARTIAL. SeCONTAINMENTè impostato suNONE, si verificano 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 Configurazione del server: lingua full-text predefinita .
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 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 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 Configurazione del server: trasformare le parole non significative .
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 Configurazione del server: cutoff anno a due cifre .
DB_CHAINING { SPENTO | IL }
Quando ON viene specificato, il database può essere l'origine o la destinazione di una catena di proprietà tra database.
Quando OFF, il database non può partecipare al concatenamento della proprietà tra database. Il valore predefinito è OFF.
Importante
L'istanza di SQL Server riconosce questa impostazione quando l'opzione cross database ownership chaining server è 0 (OFF). Quando il concatenamento della proprietà tra database è 1 (ON), tutti i database utente possono partecipare a catene di proprietà tra database, indipendentemente 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 su questi database di sistema: master, model, tempdb.
AFFIDABILE { SPENTO | IL }
Quando ON viene specificato, i moduli di database ,ad esempio viste, funzioni definite dall'utente o stored procedure, che usano un contesto di rappresentazione possono accedere alle risorse esterne al database.
Quando OFF, i moduli di database in un contesto di rappresentazione non possono accedere alle risorse esterne al database. Il valore predefinito è OFF.
TRUSTWORTHY viene impostato su OFF ogni volta che il database è collegato.
Per impostazione predefinita, tutti i database di sistema ad eccezione del msdb database sono TRUSTWORTHY impostati su OFF. Il valore non può essere modificato per i model database e tempdb . È consigliabile non impostare mai l'opzione TRUSTWORTHY su ON per il master database.
PERSISTENT_LOG_BUFFER = ON ( DIRECTORY_NAME = 'directory_name' )
Si applica a: SQL Server 2017 (14.x) e versioni successive
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
REGISTRO = { 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.
CREARE UN DATABASE ... PER ATTACCARE [ CON <> attach_database_option ]
Specifica che il database viene creato collegando un set esistente di file del sistema operativo. Deve essere presente una <filespec> voce che specifichi il file primario. Le uniche altre <filespec> voci richieste sono quelle per tutti i file che hanno un percorso diverso da quello della prima creazione o dell'ultimo collegamento del database. Per questi file è necessario specificare una <filespec> voce.
FOR ATTACH Richiede:
- Tutti i file di dati (MDF e NDF) devono essere disponibili.
- Tutti i file di log esistenti devono essere disponibili.
Se un database di lettura/scrittura dispone di un singolo file di log attualmente non disponibile e se il database è stato arrestato senza utenti o transazioni aperte prima dell'operazione ATTACH , FOR ATTACH ricompila automaticamente il file di log e aggiorna il file primario. Al contrario, per un database di sola lettura, il log non può essere ricompilato perché il file primario non può essere aggiornato. Pertanto, quando si collega un database di sola lettura con un log non disponibile, è necessario specificare i file di log o i file nella FOR ATTACH clausola .
Nota
Un database creato da una versione più recente di SQL Server non può essere collegato nelle versioni precedenti.
In SQL Server tutti i file full-text che fanno parte del database collegato vengono collegati 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 ulteriori informazioni, vedere Esempi.
Se si collega un database che contiene un'opzione FILESTREAM di "Nome directory", SQL Server deve verificare che il Database_Directory nome sia univoco. In caso contrario, l'operazione ATTACH non riesce 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.
FOR ATTACH non può essere specificato in uno snapshot del database.
FOR ATTACH può specificare l'opzione RESTRICTED_USER .
RESTRICTED_USER consente solo ai membri del ruolo predefinito del database db_owner e ai ruoli predefiniti del server dbcreator e sysadmin di connettersi al database, ma non limita il numero. Tentativi dagli utenti non qualificati vengono rifiutati.
<service_broker_option>
Se il database utilizza Service Broker, utilizzare il WITH <service_broker_option> pulsante nella FOR ATTACH clausola:
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 utilizzata la FOR ATTACH clausola.
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 invece di essere scollegato, prendere in considerazione:
- 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 usando il 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 prima collegato o ripristinato in una nuova istanza di SQL Server, una copia della chiave master del database (crittografata dalla chiave master del servizio) non è ancora archiviata nel server. È necessario usare l'istruzione OPEN MASTER KEY per decrittografare la chiave master del database (DMK). 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. La rigenerazione della chiave DMK per l'aggiornamento a AES è necessaria una sola volta e non ha alcun effetto sulle rigenerazioni future come parte di una strategia di rotazione chiave. Per informazioni su come aggiornare un database tramite collegamento, vedere Aggiornare un database tramite 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 TRUSTWORTHY opzioni e DB_CHAINING non hanno alcun effetto quando si collega un database.
PER 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. Deve essere presente una <filespec> voce 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 questo percorso, vedere Visualizzare o modificare i percorsi predefiniti per i file di dati e di log.
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. Si consiglia di eseguire un backup completo del database subito dopo il completamento dell'operazione. Per altre informazioni, vedere BACKUP.
In genere, FOR ATTACH_REBUILD_LOG viene utilizzato quando si copia un database di lettura/scrittura con un registro di grandi dimensioni in un altro server in cui la copia verrà utilizzata principalmente o solo per le operazioni di lettura e pertanto richiede meno spazio nel registro rispetto al database originale.
FOR ATTACH_REBUILD_LOG non può essere specificato in uno snapshot del database.
Per altre informazioni sul collegamento e la rimozione di database, vedere Scollegamento e collegamento del database (SQL Server).
<filespec>
Controlla le proprietà del file.
NOME logical_file_name
Specifica il nome logico per il file.
NAME è obbligatorio quando FILENAME viene specificato, tranne quando si specifica una delle FOR ATTACH clausole. Un FILESTREAM filegroup non può essere denominato PRIMARY.
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.
NOME FILE { 'os_file_name' | 'filestream_path' }
Specifica il nome del file (fisico) del sistema operativo.
os_file_name
Percorso e nome 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 esistere prima di eseguire l'istruzione
CREATE DATABASE. Per altre informazioni, vedere Filegroup e file di database più avanti in questo articolo.SIZE,MAXSIZE, eFILEGROWTHi parametri possono essere impostati quando viene 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 (12.x) e versioni successive.
I file di dati non devono essere inseriti in file system compressi a meno che i file non siano file secondari di sola lettura o il database sia di sola lettura. I file di log non devono mai essere archiviati in file system compressi.
filestream_path
Per un filegroup FILESTREAM,
FILENAMEfa riferimento a un percorso in cui verranno archiviati i dati FILESTREAM. È necessario che il percorso fino all'ultima cartella esista già, mentre l'ultima cartella non deve essere presente. Ad esempio, se si specifica il percorsoC:\MyFiles\MyFilestreamData,C:\MyFilesdeve esistere prima di eseguireALTER DATABASE, ma laMyFilestreamDatacartella non deve esistere.Il filegroup e il file (
<filespec>) devono essere creati nella stessa istruzione.Le
SIZEproprietà eFILEGROWTHnon si applicano a un filegroup FILESTREAM.
TAGLIA taglia
Specifica le dimensioni del file.
SIZE non può essere specificato quando il os_file_name viene specificato come percorso UNC.
SIZE non si applica a un filegroup FILESTREAM.
dimensione
Dimensioni iniziali del file.
Quando le dimensioni non vengono fornite per il file primario, il motore di database usa le dimensioni del file primario nel
modeldatabase. Le dimensioni predefinite del databasemodelsono di 8 MB a partire da SQL Server 2016 (13.x) oppure di 1 MB per le versioni precedenti. Quando viene specificato un file di dati o un file di log secondario, ma le dimensioni non vengono specificate per il file, il motore di database rende il file 8 MB (a partire da SQL Server 2016 (13.x)) o 1 MB (per le versioni precedenti). Le dimensioni specificate per il file primario devono essere uguali almeno alle dimensioni del file primario del databasemodel.È possibile usare i suffissi per kilobyte (KB), megabyte (MB), gigabyte (GB) e terabyte (TB). Il valore predefinito è MB. Specificare un numero intero. Non includere un decimale. size è un valore intero. Per i valori maggiori di 2.147.483.647, usare unità più grandi.
max_size MAXSIZE
Valore massimo fino a cui possono aumentare le dimensioni del file.
MAXSIZE non può essere specificato quando il os_file_name viene 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 un decimale. Se max_size non viene specificato, il file aumenta fino a quando il disco non è pieno. Max_size è un valore intero. Per i valori superiori a 2.147.483.647, usare le unità maggiori.
ILLIMITATO
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 sono previste dimensioni massime quando 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. L'impostazione FILEGROWTH per un file non può superare l'impostazione MAXSIZE .
FILEGROWTH non può essere specificato quando il os_file_name viene 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.
Il valore può essere specificato in
KB,MBGB,TB, o percentuale (%). Se un numero viene specificato senza unKBsuffisso ,MBo%, il valore predefinito èMB. Quando%viene specificato, la dimensione dell'incremento di crescita è la percentuale specificata delle dimensioni del file al momento in cui 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
FILEGROWTHnon viene specificato, i valori predefiniti sono: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%.
<Gruppo file>
Controlla le proprietà del filegroup. Impossibile specificare il filegroup in uno snapshot del database.
FILEGROUP filegroup_name
Nome logico del filegroup.
filegroup_name
filegroup_name devono essere univoci nel database e non possono essere i nomi
PRIMARYforniti dal sistema ePRIMARY_LOG. 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.CONTIENE FILESTREAM
Specifica che tramite il filegroup vengono archiviati oggetti binari di grandi dimensioni (BLOB) nel file system.
Predefinito
Indica che il filegroup specificato è il filegroup predefinito nel database.
CONTIENE 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 In-Memory panoramica oltp e scenari di utilizzo. È consentito un
MEMORY_OPTIMIZED_DATAsolo filegroup per ogni 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. Tuttavia, i file di log non sono 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 CREATE DATABASE ON clausola , l'istruzione ha esito negativo e viene generato un errore.
Per le descrizioni di NAME e FILENAME i relativi valori, vedere le descrizioni dei valori equivalenti <filespec> .
Nota
Quando si crea uno snapshot del database, le altre <filespec> opzioni e la parola chiave PRIMARY non sono consentite.
COME ISTANTANEA DI 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.
In SQL Server 2017 (14.x) e versioni precedenti il database di origine per uno snapshot del database non può contenere un MEMORY_OPTIMIZED_DATA filegroup. Il supporto per gli snapshot del database in memoria è stato aggiunto in SQL Server 2019 (15.x).
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 (modalità di gestione delle transazioni predefinita) 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 attenendosi alla procedura seguente:
- SQL Server usa una copia del database modello per inizializzare il database e i relativi metadati.
- Un GUID di Service Broker viene assegnato al database.
- 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
File di database e filegroup
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.
Istantanee 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ò fare riferimento a file di log, file offline, ripristino di file 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 (SQL Server) e Creare uno snapshot del database.
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 model database non influisce sui database esistenti. Se nell'istruzione CREATE DATABASE viene specificato FOR ATTACH, il nuovo database eredita le impostazioni delle opzioni di database del 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 di database è in genere limitata a pochi account di accesso.
Nell'esempio seguente viene fornita l'autorizzazione per creare un database all'utente Faydel database .
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 di creazione
- Distaccato
- Modifica per l'aggiunta di un nuovo file
- Ripristinato
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 <filespec> contiene elementi, il file di database primario è la dimensione del file primario del model database. 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, i file possono aumentare per riempire tutto 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. Poiché la parola chiave PRIMARY non viene usata, il primo file (Sales_dat) diventa il file primario. Poiché nel parametro per il SIZE file non viene specificato Sales_dat né MB né KB, viene usato MB e allocato 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 = 5 MB,
MAXSIZE = 25 MB,
FILEGROWTH = 5 MB
);
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 = 100 MB,
MAXSIZE = 200,
FILEGROWTH = 20
), (
NAME = Arch2,
FILENAME = 'D:\SalesData\archdat2.ndf',
SIZE = 100 MB,
MAXSIZE = 200,
FILEGROWTH = 20
), (
NAME = Arch3,
FILENAME = 'D:\SalesData\archdat3.ndf',
SIZE = 100 MB, MAXSIZE = 200,
FILEGROWTH = 20
)
LOG ON (
NAME = Archlog1,
FILENAME = 'D:\SalesData\archlog1.ldf',
SIZE = 100 MB,
MAXSIZE = 200,
FILEGROWTH = 20
), (
NAME = Archlog2,
FILENAME = 'D:\SalesData\archlog2.ldf',
SIZE = 100 MB,
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_dateSpri2_dat. GliFILEGROWTHincrementi per questi file vengono specificati come15%. - Un filegroup
SalesGroup1con i fileSGrp1Fi1eSGrp1Fi2. - Un filegroup
SalesGroup2con i fileSGrp2Fi1eSGrp2Fi2.
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 = 5 MB,
MAXSIZE = 25 MB,
FILEGROWTH = 5 MB
);
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, è necessario specificare solo il file primario nella FOR ATTACH clausola . A partire da SQL Server 2005 (9.x)SQL Server 2005 (9.x)SQL Server 2005 (9.x)SQL Server 2005 (9.x)SQL Server 2005 (9.x)SQL Server 2005 (9.x)SQL Server 2005 (9.x)SQL Server 2005 (9.x)SQL Server 2005 (9.
USE master;
GO
EXECUTE 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 è di sola lettura, non è possibile specificare un file di log. In conformità con la sintassi, viene specificato ogni file nel database di origine e 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 AdventureWorks2025. 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
EXECUTE 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
Io. 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_datacontiene dati delle righe. Contiene un file,FileStreamDB_data.mdf, con il percorso predefinito.FileStreamPhotoscontiene dati FILESTREAM. Contiene due contenitori di dati FILESTREAM,FSPhotosnel percorsoC:\MyFSfolder\PhotoseFSPhotos2nel percorsoD:\MyFSfolder\Photos. È contrassegnato come filegroup FILESTREAM predefinito.FileStreamResumescontiene dati FILESTREAM. Contiene un contenitore di dati FILESTREAM, ossiaFSResumesnel percorsoC:\MyFSfolder\Resumes.
USE master;
GO
-- Get the SQL Server data path.
DECLARE @data_path AS 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 = 10 MB,
MAXSIZE = 50 MB,
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 is 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 = 5 MB,
MAXSIZE = 25 MB,
FILEGROWTH = 5 MB
);');
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 = 100 MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 1 MB
),
FILEGROUP [FS] CONTAINS FILESTREAM DEFAULT
(NAME = N'FS1', FILENAME = N'C:\BlobStore\FS1', MAXSIZE = UNLIMITED),
(NAME = N'FS2', FILENAME = N'C:\BlobStore\FS2', MAXSIZE = 100 MB)
LOG ON (
NAME = N'BlobStore1_log',
FILENAME = N'C:\BlobStore\BlobStore1_log.ldf',
SIZE = 100 MB,
MAXSIZE = 1 GB,
FILEGROWTH = 1 MB
);
GO
ALTER DATABASE [BlobStore1]
ADD FILE (
NAME = N'FS3',
FILENAME = N'C:\BlobStore\FS3',
MAXSIZE = 100 MB
) TO FILEGROUP [FS];
GO
Contenuto correlato
- ALTER DATABASE (Transact-SQL)
- Scollegamento e collegamento del database (SQL Server)
- DROP DATABASE (Transact-SQL)
- DATI EVENTO (Transact-SQL)
- ALTERA AUTORIZZAZIONE (Transact-SQL)
- sp_detach_db
- sp_removedbreplication
- Snapshot del database (SQL Server)
- Spostare file del database
- Database
- Dati BLOB (Binary Large Object) (SQL Server)
* 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
Creare 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_S_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_S_Gen5_n'
| 'HS_PRMS_n'
| 'HS_MOPRMS_n'
| { ELASTIC_POOL(name = <elastic_pool_name>) } } )
]
[ WITH ( BACKUP_STORAGE_REDUNDANCY = { 'LOCAL' | 'ZONE' | 'GEO' | 'GEOZONE' } ) ]
[ ; ]
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 di database.
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 specificato, 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, COLLATE.
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 SQL_Latin1_General_CP1_CI_AS confronto. Questa è l'impostazione predefinita nel database SQL di Azure se CATALOG_COLLATION non è specificata.
DATABASE_DEFAULT specifica che il catalogo dei metadati utilizzato per le viste di sistema e le tabelle di sistema deve essere confrontato in modo che corrisponda alle 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. Nell'esempio seguente viene creato il database con regole di confronto con distinzione tra maiuscole e minuscole per i dati di riga, ma vengono utilizzate le regole di confronto predefinite
SQL_Latin1_General_CP1_CI_ASsenza 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 viene usato per gli identificatori di oggetto.CREATE DATABASE [same-collations] COLLATE SQL_Latin1_General_CP1_CS_AS WITH CATALOG_COLLATION = DATABASE_DEFAULT;
BACKUP_STORAGE_REDUNDANCY = {'LOCALE' | 'ZONE' | 'GEO' | 'GEOZONE' }
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.
Usare GEOZONE per l'archiviazione con ridondanza della zona geografica. L'archiviazione con ridondanza della zona geografica offre il massimo livello di protezione contro le interruzioni di zona e le interruzioni regionali per qualsiasi carico di lavoro.
Per applicare la residenza dei dati quando si crea un database usando T-SQL, usare LOCAL o ZONE come input per il BACKUP_STORAGE_REDUNDANCY parametro .
Quando si crea un database come copia di un altro database con AS COPY OF, la specifica delle opzioni è supportata e deve essere racchiusa tra parentesi. Ad esempio: WITH (BACKUP_STORAGE_REDUNDANCY = 'LOCAL');.
REGISTRO = { 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.
DIMENSIONE MASSIMA
Specifica le dimensioni massime del database.
MAXSIZE deve essere valido per il livello di servizio specificato EDITION .
Di seguito sono riportati i valori supportati MAXSIZE e le impostazioni predefinite (D) per i livelli di servizio.
Nota
L'argomento MAXSIZE non si applica ai database singoli nel livello di servizio Hyperscale. I database a livello Hyperscale singolo aumentano in base alle esigenze, fino a 128 TB. Il servizio database SQL aggiunge automaticamente l'archiviazione: non è necessario impostare una dimensione massima.
Modello DTU per database singoli e in pool in un server di database SQL
MAXSIZE |
Fondamentale | S0-S2 | S3-S12 | P1-P6 | P11-P15 1 |
|---|---|---|---|---|---|
| 100 MB | Yes | Yes | Yes | Yes | Yes |
| 500 MB | Yes | Yes | Yes | Yes | Yes |
| 1 GB | Yes | Yes | Yes | Yes | Yes |
| 2GB | Sì (D) | Yes | Yes | Yes | Yes |
| 5 GB | N/D | Yes | Yes | Yes | Yes |
| 10 GB | N/D | Yes | Yes | Yes | Yes |
| 20 GB | N/D | Yes | Yes | Yes | Yes |
| 30 GB | N/D | Yes | Yes | Yes | Yes |
| 40 GB | N/D | Yes | Yes | Yes | Yes |
| 50 GB | N/D | Yes | Yes | Yes | Yes |
| 100 GB | N/D | Yes | Yes | Yes | Yes |
| 150 GB | N/D | Yes | Yes | Yes | Yes |
| 200 GB | N/D | Yes | Yes | Yes | Yes |
| 250 GB | N/D | Sì (D) | Sì (D) | Yes | Yes |
| 300 GB | N/D | N/D | Yes | Yes | Yes |
| 400 GB | N/D | N/D | Yes | Yes | Yes |
| 500 GB | N/D | N/D | Yes | Sì (D) | Yes |
| 750 GB | N/D | N/D | Yes | Yes | Yes |
| 1024 GB | N/D | N/D | Yes | Yes | Sì (D) |
| Da 1.024 GB fino a 4.096 GB in incrementi di 256 GB | N/D | N/D | N/D | N/D | Yes |
1 P11 e P15 consentono MAXSIZE fino a 4 TB con 1.024 GB di dimensioni predefinite. 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 aree seguenti: 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 altre informazioni sulle limitazioni delle risorse per il modello DTU, vedere Limiti delle risorse per database singoli usando il modello di acquisto DTU - Database SQL di Azure.
Il MAXSIZE valore per il modello DTU, se specificato, deve essere un valore valido indicato nella tabella precedente per il livello di servizio specificato.
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 altre informazioni sulle limitazioni delle risorse per il modello vCore, vedere Limiti delle risorse vCore.
EDIZIONE
Specifica il livello del servizio del database.
Database singoli e in pool. I valori disponibili sono: 'Basic', 'Standard', 'Premium', 'GeneralPurpose', 'BusinessCritical' e 'Hyperscale'.
Le regole seguenti si applicano agli MAXSIZE argomenti e EDITION :
Se
EDITIONviene specificato maMAXSIZEnon specificato, viene usato il valore predefinito per l'edizione. Se, ad esempio,EDITIONè impostato su Standard eMAXSIZEnon viene specificato , max'SIZE viene impostato automaticamente su 250 MB.Se non viene specificato né
MAXSIZEEDITION, l'oggettoEDITIONè impostato su "GeneralPurpose" eMAXSIZEviene 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, ,S6S7,S9,S12P1P2P4P6P11P15Per 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.- Per esempio:
-
GP_Gen5_8per utilizzo generico, calcolo con provisioning, serie Standard (Gen5), 8 vCore. -
GP_S_Gen5_8per utilizzo generico, calcolo serverless, serie Standard (Gen5), 8 vCore. -
HS_Gen5_8per Hyperscale, calcolo con provisioning, serie Standard (Gen5), 8 vCore. -
HS_S_Gen5_8per Hyperscale, calcolo serverless, Serie Standard (Gen5), 8 vCore.
-
- Per esempio:
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 l'oggetto specificato SERVICE_OBJECTIVE non è supportato da EDITION, viene visualizzato un errore. Per modificare il SERVICE_OBJECTIVE valore da un livello a un altro (ad esempio da S1 a P1), è necessario modificare anche il EDITION valore. Il supporto per gli obiettivi di servizio PRS è stato rimosso.
ELASTIC_POOL (nome = <elastic_pool_name>)
Si applica a: Solo database singoli e in pool. Non si applica ai database nel livello di servizio Hyperscale.
Per creare un nuovo database in un pool di database elastici, impostare l'oggetto SERVICE_OBJECTIVE del database su ELASTIC_POOL e specificare il nome del pool. Per maggiori informazioni, si veda I pool elastici consentono di gestire e dimensionare più database nel database SQL di Azure.
COME COPIA DI [ source_server_name. ] source_database_name
Si applica a: Solo database singoli e in pool.
Utilizzare AS COPY OF per copiare un database nello stesso server di database SQL o diverso.
Quando si crea un database come copia di un altro database con AS COPY OF, è supportata la specifica delle opzioni e deve essere racchiuso tra parentesi. Ad esempio: WITH (BACKUP_STORAGE_REDUNDANCY = 'LOCAL');.
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 OFnon supporta i nomi di dominio univoci completi. In altre parole, se il nome di dominio completo del server èserverName.database.windows.net, usare soloserverNamedurante 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 i dati o creare nuovi oggetti, ad esempio 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. Potrebbe essere necessario un ritardo di 15 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 del database
Si applica a: Solo database singoli e in pool.
La copia di un database tramite l'istruzione CREATE DATABASE è un'operazione asincrona. Pertanto, non è 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 sulle
percentage_completecolonne oreplication_state_descnella dm_database_copies ostatenellasys.databasesvista. È 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 è coerente dal punto di vista transazionale 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 di database.
- L'istruzione
CREATE DATABASEdeve essere eseguita nel contesto del databasemasterdel 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 DATABASEeDROP DATABASEper 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 Copiare una versione coerente a livello transazionale di un database in Azure SQL Database.
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 di base
Esempio di base per la creazione di un database.
CREATE DATABASE TestDB1;
Esempio di base con edizione
Esempio di base 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
Nell'esempio seguente viene creata una copia del db_original database denominato db_copy nell'obiettivo di servizio Utilizzo generico 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 <database>.db_original
(EDITION = 'GeneralPurpose', SERVICE_OBJECTIVE = 'GP_Gen5_8');
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 <database>.db_original
(SERVICE_OBJECTIVE = ELASTIC_POOL (NAME = ep1));
Creare un database con il valore di regole di confronto del catalogo specificato
Nell'esempio seguente le regole di confronto del catalogo vengono impostate su DATABASE_DEFAULT durante la creazione del database, che imposta le regole di confronto del catalogo come le 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 di ripristino temporizzato che i backup di conservazione a lungo termine (se configurati) usano la stessa ridondanza dell'archiviazione 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;
Crea come copia di un database durante la modifica delle opzioni
Nell'esempio seguente vengono impostate diverse opzioni per la nuova copia di un database, tra cui un livello di servizio diverso e le impostazioni di ridondanza dell'archiviazione di backup. Per impostazione predefinita, la copia del database viene creata con le stesse impostazioni del database di origine.
CREATE DATABASE copy_testdb
AS COPY OF [test_db]
(EDITION = 'GeneralPurpose', SERVICE_OBJECTIVE = 'GP_Gen5_8')
WITH (BACKUP_STORAGE_REDUNDANCY = 'LOCAL');
Contenuto correlato
* 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.
Per le istanze gestite di SQL, l'inizializzazione MAXSIZE viene impostata in modo implicito sulle dimensioni correnti del disco e non cambia automaticamente quando si estende la dimensione del disco dal portale di Azure. Dopo aver esteso il disco, è consigliabile estendere MAXSIZE anche con ALTER DATABASE per evitare errori completi del file di 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 di database.
collation_name
Specifica le regole di confronto predefinite per il database. È possibile usare nomi di regole di confronto di Windows o SQL. Se non specificato, 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, COLLATE.
REGISTRO = { 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 diWITH LEDGER.Suggerimento
Come soluzione alternativa, usare ALTER DATABASE dopo
CREATE DATABASEper impostare le opzioni di database e aggiungere i file.
Autorizzazioni
Per creare un database, è necessario che l'account di accesso sia uno dei tipi di entità di sicurezza seguenti:
- Account di accesso principale di livello server
- Amministratore di Microsoft Entra per il server logico in Azure
- Account di accesso membro del ruolo del database dbcreator
Esempi
Esempio di base
Esempio di base per la creazione di un database.
CREATE DATABASE TestDB1;
Creare un database di libro mastro
CREATE DATABASE MyLedgerDB
WITH LEDGER = ON;
Contenuto correlato
* Azure Synapse
Analitica*
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 DATABASEè supportato per i pool SQL dedicati autonomi (in precedenza SQL Data Warehouse) usando i livelli di servizio Gen2. -
CREATE DATABASEnon è supportato per i pool SQL dedicati in un'area di lavoro di Azure Synapse Analytics. Usare invece il portale di Azure. -
CREATE DATABASEè supportato 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 di database.
collation_name
Specifica le regole di confronto predefinite per il database. È possibile usare nomi di regole di confronto di Windows o SQL. Se non specificato, 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 di Windows e SQL, vedere COLLATE.
DIMENSIONE MASSIMA
Il valore predefinito è 245.760 GB (240 TB).
Si applica a: ottimizzato per il calcolo di prima generazione
Dimensioni massime consentite per il database. Il database non può aumentare oltre MAXSIZE.
Si applica a: ottimizzato per il calcolo di seconda generazione
Dimensioni massime consentite per i dati rowstore nel database. I dati archiviati in tabelle rowstore, un deltastore di un indice columnstore o un indice non cluster in un indice columnstore cluster non possono aumentare oltre MAXSIZE. I dati compressi in formato columnstore non hanno un limite di dimensioni e non sono vincolati da MAXSIZE.
EDIZIONE
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 del servizio Gen1 (non più elencati) non sono più supportati, è possibile ricevere 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 Livello di compatibilità ALTER DATABASE.
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 MAXSIZE, SQL Server genera il codice di errore 40544. In questo caso, non è possibile inserire e aggiornare i dati o creare nuovi oggetti, ad esempio 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.
Limiti
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.
Esempi: Azure Synapse Analytics
R. Esempio di base
Esempio di base 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 di base 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;
Contenuto correlato
- ALTER DATABASE (Azure Synapse Analytics)
- CREATE TABLE
- DROP DATABASE (Transact-SQL)
* 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 aumentano automaticamente in base alle esigenze oltre le dimensioni specificate. Il valore predefinito è OFF.
Se AUTOGROW è ON, replicated_size, distributed_size e log_size aumentano in base alle esigenze con ogni operazione di inserimento, aggiornamento o altra azione che richiede più spazio di archiviazione di quanto sia già stato allocato.
Se AUTOGROW è OFF, le dimensioni non aumentano automaticamente. Analytics Platform System (PDW) restituisce un errore quando si tenta di eseguire un'azione che richiede replicated_size, distributed_size o log_size aumentare oltre il valore specificato.
AUTOGROW
ON è per tutte le dimensioni o OFF per tutte le dimensioni. Ad esempio, non è possibile impostare AUTOGROW ON per log_size, ma non impostarlo 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 è ON, le tabelle replicate possono aumentare oltre questo limite.
Se AUTOGROW è OFF, viene restituito un errore se un utente tenta di creare una nuova tabella replicata, inserire dati in una tabella replicata esistente o aggiornare una tabella replicata esistente in modo da aumentare le dimensioni oltre 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 è ON, le tabelle distribuite possono aumentare oltre questo limite.
Se AUTOGROW è OFF, viene restituito un errore se un utente tenta di creare una nuova tabella distribuita, inserire dati in una tabella distribuita esistente o aggiornare una tabella distribuita esistente in modo da aumentare le dimensioni oltre 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 è ON, il file di log può superare questo limite. Usare l'istruzione DBCC SHRINKLOG - Analytics Platform System (PDW) per ridurre le dimensioni dei file di log alle dimensioni originali.
Se AUTOGROW è OFF, viene restituito un errore all'utente per qualsiasi azione che aumenterebbe le dimensioni del log in un singolo nodo di calcolo oltre 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 può usare tutte le funzionalità di SQL Server 2014 (12.x) usate da PDW.
Limiti
L'istruzione CREATE DATABASE non è consentita in una transazione esplicita. Per altre informazioni, vedere istruzioniTransact-SQL.
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
Acquisisce un blocco condiviso per l'oggetto DATABASE.
Metadati UFX
Al termine dell'operazione, viene visualizzata una voce per questo database nelle viste dei metadati sys.databases e sys.objects .
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 è disattivato per impostazione predefinita.
CREATE DATABASE mytest
WITH
(REPLICATED_SIZE = 100 GB,
DISTRIBUTED_SIZE = 500 GB,
LOG_SIZE = 100 GB );
Nell'esempio seguente viene creato il database mytest con gli stessi parametri, ad eccezione del fatto che AUTOGROW è attivato. 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 di archiviazione di 1,5 GB per 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);
Contenuto correlato
- ALTER DATABASE (piattaforma di strumenti analitici)
- DROP DATABASE (Transact-SQL)