part 1:
CREATE DATABASE
Crea un nuovo database e i file utilizzati per archiviare il database oppure collega un database dai file di un database creato in precedenza.



Nota Per ulteriori informazioni sulla compatibilità con versioni precedenti di DISK INIT, vedere Dispositivi - Livello 3 in Informazioni sulla compatibilità con versioni precedenti di Microsoft® SQL Server™.


Sintassi
CREATE DATABASE database_name
[ ON
[ < filespec > [ ,...n ] ]
[ , < filegroup > [ ,...n ] ]
]
[ LOG ON { < filespec > [ ,...n ] } ]
[ COLLATE collation_name ]
[ FOR LOAD | FOR ATTACH ]

< filespec > ::=

[ PRIMARY ]
( [ NAME = logical_file_name , ]
FILENAME = 'os_file_name'
[ , SIZE = size ]
[ , MAXSIZE = { max_size | UNLIMITED } ]
[ , FILEGROWTH = growth_increment ] ) [ ,...n ]

< filegroup > ::=

FILEGROUP filegroup_name < filespec > [ ,...n ]

Argomenti
database_name

Nome del nuovo database. I nomi di database devono essere univoci all'interno di un server e conformi alle regole per gli identificatori. Il numero massimo di caratteri consentito per l'argomento database_name è 128, a meno che per il file di log non sia stato specificato alcun nome logico. Se non viene specificato un nome logico di file di log, ne viene generato uno automaticamente tramite l'aggiunta di un suffisso all'argomento database_name. Questo limita il numero di caratteri dell'argomento database_name a 123 per fare in modo che il nome logico di file di log generato includa meno di 128 caratteri.

ON

Specifica che i file su disco utilizzati per archiviare le sezioni di dati del database (file di dati) vengono definiti in modo esplicito. Alla parola chiave segue un elenco delimitato da virgola di voci <filespec> che definiscono i file di dati del filegroup primario. L'elenco di file del filegroup primario può essere seguito da un elenco facoltativo delimitato da virgola di voci <filegroup> che definiscono i filegroup utente e i relativi file.

n

Segnaposto che indica la possibilità di specificare più file per il nuovo database.

LOG ON

Specifica che i file su disco utilizzati per archiviare il log del database (file di log) vengono definiti in modo esplicito. Alla parola chiave segue un elenco delimitato da virgola di voci <filespec> che definiscono i file di log. Se la parola chiave LOG ON viene omessa, viene creato automaticamente un singolo file di log generato dal sistema con dimensioni pari al 25% della somma delle dimensioni di tutti i file di dati del database.

FOR LOAD

Questa clausola è supportata per compatibilità con versioni precedenti di Microsoft SQL Server. Il database viene creato con l'opzione di database dbo use only attivata e lo stato viene impostato per il caricamento. Ciò non è necessario in SQL Server versione 7.0, in cui un database può essere ricreato tramite l'istruzione RESTORE come parte dell'operazione di ripristino.

FOR ATTACH

Specifica che un database viene collegato da un set di file del sistema operativo già esistente. È necessario che una voce dell'elenco <filespec> specifichi il primo file primario. Le altre voci <filespec> necessarie sono quelle relative ai file con percorso diverso rispetto al percorso utilizzato in fase di creazione del database o quando il database è stato scollegato. Per questi file è necessario specificare una voce <filespec>. Il database collegato deve essere stato creato in base alla stessa tabella codici e allo stesso tipo di ordinamento di SQL Server. Utilizzare la stored procedure di sistema sp_attach_db anziché eseguire direttamente l'istruzione CREATE DATABASE FOR ATTACH. Utilizzare l'istruzione CREATE DATABASE FOR ATTACH solo quando è necessario specificare più di 16 voci <filespec>.

Se si collega un database a un server diverso dal server da cui il database è stato scollegato e il database scollegato è abilitato per la replica, è necessario eseguire sp_removedbreplication per rimuovere le opzioni di replica dal database.

collation_name

Specifica le regole di confronto predefinite per il database. È possibile utilizzare nomi di regole di confronto di Windows o SQL. Se collation_name viene omesso, al database vengono assegnate le regole di confronto predefinite dell'istanza di SQL Server.

Per ulteriori informazioni sulle regole di confronto di Windows e SQL, vedere COLLATE.

PRIMARY

Specifica che l'elenco <filespec> associato definisce il file primario. Il filegroup primario include tutte le tabelle di sistema del database e tutti gli oggetti non assegnati ai filegroup utente. La prima voce di <filespec> del filegroup primario diventa il file primario, ovvero il file contenente l'inizio logico del database e le tabelle di sistema. Un database può includere un solo file primario. Se la parola chiave PRIMARY viene omessa, il primo file elencato nell'istruzione CREATE DATABASE diventa il file primario.

NAME

Specifica il nome logico del file definito in <filespec>. Il parametro NAME non è necessario quando viene specificata la clausola FOR ATTACH.

logical_file_name

Nome utilizzato per fare riferimento al file in qualsiasi istruzione Transact-SQL eseguita dopo la creazione del database. logical_file_name deve essere univoco nel 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

Specifica il nome di file del sistema operativo definito in <filespec>.

'os_file_name'

Percorso e nome di file utilizzati dal sistema operativo in fase di creazione del file fisico definito in <filespec>. Il percorso specificato in os_file_name deve corrispondere a una directory di un'istanza di SQL Server. Non è consentito specificare una directory di un file system compresso.

Se il file viene creato in una partizione non formattata, os_file_name deve specificare solo la lettera dell'unità di una partizione non formattata esistente. È possibile creare un solo file in ogni partizione non formattata. Le dimensioni dei file di partizioni non formattate non aumentano automaticamente. I parametri MAXSIZE e FILEGROWTH pertanto non sono necessari quando os_file_name specifica una partizione non formattata.

SIZE

Specifica le dimensioni del file definito in <filespec>. Se il parametro SIZE viene omesso dalla voce <filespec> per un file primario, vengono utilizzate le dimensioni del file primario del database model. Se SIZE viene omesso dalla voce <filespec> per un file secondario, viene creato un file di 1 MB.

size

Dimensioni iniziali del file definito in <filespec>. È possibile utilizzare i suffissi per kilobyte (KB), megabyte (MB), gigabyte (GB) e terabyte (TB). Il valore predefinito è MB. Specificare un numero intero, ovvero non includere decimali. Il valore minimo consentito per l'argomento size è 512 KB. Se size viene omesso, il valore predefinito è 1 MB. Le dimensioni specificate per il file di dati primario deve essere uguale almeno alle dimensioni del file primario del database model.

MAXSIZE

Specifica le dimensioni massime per il file definito in <filespec>.

max_size

Dimensioni massime per il file definito in <filespec>. È possibile utilizzare i suffissi per kilobyte (KB), megabyte (MB), gigabyte (GB) e terabyte (TB). Il valore predefinito è MB. Specificare un numero intero, ovvero non includere decimali. Se max_size viene omesso, le dimensioni del file aumentano fino a quando il disco non risulta pieno.



Nota Quando un disco è quasi pieno, l'amministratore di sistema di SQL Server riceve un avviso inviato dal registro di sistema S/B di Microsoft Windows NT®.


UNLIMITED

Specifica che le dimensioni del file definito in <filespec> aumentano fino a quando il disco risulta pieno.

FILEGROWTH

Specifica l'incremento delle dimensione del file definito in <filespec>. Il valore impostato per il parametro FILEGROWTH di un file non può essere superiore al valore del parametro MAXSIZE.

growth_increment

Quantità di spazio aggiunta al file ogni volta che è necessario spazio aggiuntivo. Specificare un numero intero, ovvero non includere decimali. Il valore 0 indica che le dimensioni non verranno aumentate. È 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. Se FILEGROWTH viene omesso, il valore predefinito è 10% e il valore minimo è 64 KB. Le dimensioni specificate vengono arrotondate al blocco di 64 KB più prossimo.

Osservazioni
È possibile utilizzare un'istruzione CREATE DATABASE per creare un database e i file in cui archiviarlo. In SQL Server l'istruzione CREATE DATABASE è implementata in due passaggi:

Viene innanzitutto utilizzata una copia del database model per inizializzare il database e i metadati corrispondenti.


La parte rimanente del database viene quindi compilata con pagine vuote, ad eccezione delle pagine con dati interni che registrano la modalità di utilizzo dello spazio nel database.
Gli oggetti definiti dall'utente inclusi nel database model vengono pertanto copiati in tutti i nuovi database. È possibile aggiungere al database model qualsiasi oggetto che si desidera includere in tutti i database, ad esempio tabelle, viste, stored procedure, tipi di dati e così via.

Ogni nuovo database eredita le impostazioni delle opzioni di database del database model (a meno che non venga specificata l'opzione FOR ATTACH). L'opzione di database select into/bulkcopy, ad esempio, è impostata su OFF nel database model e in tutti i nuovi database. Se si esegue l'istruzione ALTER DATABASE per modificare le opzioni del database model, tali impostazioni vengono adottate anche nei nuovi database. Se viene specificata l'opzione FOR ATTACH nell'istruzione CREATE DATABASE, i nuovi database ereditano le impostazioni delle opzioni di database dal database originale.

In un server è possibile specificare al massimo 32.767 database.

Per l'archiviazione di un database vengono utilizzati tre tipi di file:

Il file primario include le informazioni di avvio del database. Viene inoltre utilizzato per archiviare dati. A ogni database è associato un file primario.


I file secondari contengono tutti i dati che non è possibile includere nel file primario. I file secondari non sono necessari se il file di dati primario è sufficientemente grande per contenere tutti i dati del database. Per alcuni database di grandi dimensioni potrebbe essere necessario utilizzare più file secondari oppure file secondari su unità disco distinte in modo da distribuire i dati su più dischi.


I file di log delle transazioni contengono le informazioni necessarie per il ripristino del database. È necessario che per ogni database sia disponibile almeno un file di log delle transazioni. La dimensione minima per un file di log delle transazioni è 512 KB.
Ogni database include almeno due file, un file primario e un file di log delle transazioni.

Sebbene 'os_file_name' possa essere qualsiasi nome valido di file del sistema operativo, è consigliabile specificare le seguenti estensioni in modo che il nome indichi chiaramente lo scopo del file.

Tipo di file Estensione del nome del file
File di dati primario mdf
File di dati secondario ndf
File di log delle transazioni ldf