Nota Quando si crea un database utente, è consigliabile eseguire un backup del database master.
Non è possibile specificare frazioni nei parametri SIZE, MAXSIZE e FILEGROWTH. Per specificare una frazione di megabyte nei parametri SIZE, è necessario convertire il valore in kilobyte moltiplicando il numero per 1.024. Specificare, ad esempio, 1.536 KB anziché 1,5 MB (1,5 moltiplicato per 1.024 è uguale a 1.536).
Quando una semplice istruzione CREATE DATABASE database_name viene specificata senza parametri aggiuntivi, il database viene creato con le stesse dimensioni del database model.
A tutti i database è associato almeno un filegroup primario, a cui vengono assegnate tutte le tabelle di sistema. Per un database potrebbero essere inoltre disponibili filegroup definiti dall'utente. Se un oggetto viene creato con una clausola ON filegroup che specifica un filegroup definito dall'utente, tutte le pagine per l'oggetto vengono allocate nel filegroup specificato. Le pagine per tutti gli oggetti utente creati senza la clausola ON filegroup o con la clausola ON DEFAULT vengono allocate nel filegroup primario. Nei nuovi database il filegroup primario è il filegroup predefinito. È tuttavia possibile impostare come predefinito un filegroup definito dall'utente tramite l'istruzione ALTER DATABASE:
ALTER DATABASE database_name MODIFY FILEGROUP filegroup_name DEFAULT
Ogni database ha un proprietario che può eseguire attività particolari nel database. Il proprietario è l'utente che crea il database. È possibile modificare il proprietario del database con la procedura sp_changedbowner.
Per visualizzare un report relativo a un database o a tutti i database di un computer SQL Server, utilizzare la procedura sp_helpdb. Per ottenere un report relativo allo spazio in uso in un database, utilizzare la procedura sp_spaceused. Per un report relativo ai filegroup di un database, utilizzare la procedura sp_helpfilegroup, mentre per un report dei file di un database utilizzare la procedura sp_helpfile.
Nelle versioni precedenti di SQL Server, prima di eseguire l'istruzione CREATE DATABASE vengono eseguite istruzioni DISK INIT per creare i file di un database. Per compatibilità con le versioni precedenti, l'istruzione CREATE DATABASE consente di creare un nuovo database in file o dispositivi creati con l'istruzione DISK INIT. Per ulteriori informazioni, vedere Compatibilità di SQL Server con le versioni precedenti.
Autorizzazioni
L'autorizzazione per l'istruzione CREATE DATABASE viene assegnata per impostazione predefinita ai membri dei ruoli predefiniti del server sysadmin e dbcreator. I membri dei ruoli predefiniti del server sysadmin e securityadmin possono concedere autorizzazioni per l'istruzione CREATE DATABASE ad altri account di accesso. I membri dei ruoli predefiniti del server sysadmin e dbcreator possono aggiungere altri account di accesso al ruolo dbcreator. È necessario che l'autorizzazione per l'istruzione CREATE DATABASE sia concessa in modo esplicito. Non è possibile concederla tramite l'istruzione GRANT ALL.
L'autorizzazione per l'istruzione CREATE DATABASE viene normalmente limitata a pochi account di accesso per mantenere il controllo sull'utilizzo del disco di un computer SQL Server.
Esempi
A. Creazione di un database che specifica i file di dati e i file di log delle transazioni
In questo esempio viene creato il database Sales. Dato che la parola chiave PRIMARY non è specificata, il primo file, ovvero Sales_dat, corrisponde al file primario. Nel parametro SIZE non viene specificato il suffisso MB o KB per le dimensioni del file Sales_dat, che per impostazione predefinita vengono pertanto allocate in megabyte. Le dimensioni del file Sales_log vengono allocate in megabyte perché nel parametro SIZE è stato specificato in modo esplicito il suffisso MB.
USE master
GO
CREATE DATABASE Sales
ON
( NAME = Sales_dat,
FILENAME = 'c:\program files\microsoft sql server\mssql\data\saledat.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = 'Sales_log',
FILENAME = 'c:\program files\microsoft sql server\mssql\data\salelog.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB )
GO
B. Creazione di un database specificando più file di dati e più file di log delle transazioni
In questo esempio viene creato il database Archive con tre file di dati da 100 MB e due file di 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.
USE master
GO
CREATE DATABASE Archive
ON
PRIMARY ( NAME = Arch1,
FILENAME = 'c:\program files\microsoft sql server\mssql\data\archdat1.mdf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20),
( NAME = Arch2,
FILENAME = 'c:\program files\microsoft sql server\mssql\data\archdat2.ndf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20),
( NAME = Arch3,
FILENAME = 'c:\program files\microsoft sql server\mssql\data\archdat3.ndf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20)
LOG ON
( NAME = Archlog1,
FILENAME = 'c:\program files\microsoft sql server\mssql\data\archlog1.ldf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20),
( NAME = Archlog2,
FILENAME = 'c:\program files\microsoft sql server\mssql\data\archlog2.ldf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20)
GO
C. Creazione di un database semplice
In questo esempio viene creato il database Products e viene specificato un singolo file. Il file specificato diventa il file primario e viene automaticamente creato un file di log delle transazioni da 1 MB. Poiché per il file primario non viene specificato il suffisso MB o KB nel parametro SIZE, le dimensioni del file vengono allocate in megabyte. Inoltre, dato che per il file di log delle transazioni non è specificata alcuna voce <filespec>, il parametro MAXSIZE non viene specificato, ovvero le dimensioni del file di log delle transazioni potranno aumentare fino a riempire lo spazio disponibile del disco.
USE master
GO
CREATE DATABASE Products
ON
( NAME = prods_dat,
FILENAME = 'c:\program files\microsoft sql server\mssql\data\prods.mdf',
SIZE = 4,
MAXSIZE = 10,
FILEGROWTH = 1 )
GO
D. Creazione di un database senza specificare alcun file
In questo esempio viene creato il database mytest insieme al file primario e al file di log delle transazioni corrispondente. Poiché nell'istruzione non è specificata alcuna voce <filespec>, le dimensioni del file primario del database corrispondono a quelle del file primario del database model, così come le dimensioni del file di log delle transazioni, che corrispondono a quelle del file di log delle transazioni del database model. Poiché MAXSIZE non è specificato, le dimensioni dei file possono aumentare fino a riempire lo spazio disponibile su disco.
CREATE DATABASE mytest
E. Creazione di un database senza specificare il parametro SIZE
In questo esempio viene creato il database products2. Il file prods2_dat diventa il file primario con dimensioni pari a quelle del file primario del database model. Il file di log delle transazioni viene creato automaticamente con dimensioni pari al 25% delle dimensioni del file primario o a 512 KB, a seconda del valore maggiore. Poiché MAXSIZE non è specificato, le dimensioni dei file possono aumentare fino a riempire lo spazio disponibile su disco.
USE master
GO
CREATE DATABASE Products2
ON
( NAME = prods2_dat,
FILENAME = 'c:\program files\microsoft sql server\mssql\data\prods2.mdf' )
GO
F. Creazione di un database con filegroup
In questo esempio viene creato il database sales con i tre seguenti filegroup:
Il filegroup primario con i file Spri1_dat e Spri2_dat. L'incremento specificato nel parametro FILEGROWTH per tali file è uguale al 15%.
Il filegroup SalesGroup1 con i file SGrp1Fi1 e SGrp1Fi2.
Il filegroup SalesGroup2 con i file SGrp2Fi1 e SGrp2Fi2.
CREATE DATABASE Sales
ON PRIMARY
( NAME = SPri1_dat,
FILENAME = 'c:\program files\microsoft sql server\mssql\data\SPri1dat.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 15% ),
( NAME = SPri2_dat,
FILENAME = 'c:\program files\microsoft sql server\mssql\data\SPri2dt.ndf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 15% ),
FILEGROUP SalesGroup1
( NAME = SGrp1Fi1_dat,
FILENAME = 'c:\program files\microsoft sql server\mssql\data\SG1Fi1dt.ndf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 ),
( NAME = SGrp1Fi2_dat,
FILENAME = 'c:\program files\microsoft sql server\mssql\data\SG1Fi2dt.ndf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 ),
FILEGROUP SalesGroup2
( NAME = SGrp2Fi1_dat,
FILENAME = 'c:\program files\microsoft sql server\mssql\data\SG2Fi1dt.ndf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 ),
( NAME = SGrp2Fi2_dat,
FILENAME = 'c:\program files\microsoft sql server\mssql\data\SG2Fi2dt.ndf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = 'Sales_log',
FILENAME = 'c:\program files\microsoft sql server\mssql\data\salelog.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB )
GO
G. Collegamento di un database
Nell'esempio B viene creato il database Archive con i seguenti file fisici:
c:\program files\microsoft sql server\mssql\data\archdat1.mdf
c:\program files\microsoft sql server\mssql\data\archdat2.ndf
c:\program files\microsoft sql server\mssql\data\archdat3.ndf
c:\program files\microsoft sql server\mssql\data\archlog1.ldf
c:\program files\microsoft sql server\mssql\data\archlog2.ldf
È possibile scollegare il database con la stored procedure sp_detach_db, quindi ricollegarlo utilizzando l'istruzione CREATE DATABASE con la clausola FOR ATTACH:
sp_detach_db Archive
GO
CREATE DATABASE Archive
ON PRIMARY (FILENAME = 'c:\program files\microsoft sql server\mssql\data\archdat1.mdf')
FOR ATTACH
GO
H. Utilizzo di partizioni non formattate
In questo esempio viene creato il database Employees utilizzando partizioni non formattate. È necessario che le partizioni non formattate esistano quando si esegue l'istruzione. Ogni partizione non formattata può includere un solo file.
USE master
GO
CREATE DATABASE Employees
ON
( NAME = Empl_dat,
FILENAME = 'f:',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = 'Sales_log',
FILENAME = 'g:',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB )
GO
I. Utilizzo di unità installate
In questo esempio viene creato il database Employees utilizzando unità installate che puntano a partizioni non formattate. Questa funzione è disponibile solo in Microsoft® Windows®. È necessario che, quando si esegue l'istruzione, le unità installate e le partizioni non formattate siano esistenti. Inoltre, ogni partizione è possibile inserire un solo file. Quando si crea un file di database in un'unità installata, il percorso dell'unità deve terminare con una barra rovesciata (\).
USE master
GO
CREATE DATABASE Employees
ON
( NAME = Empl_dat,
FILENAME = 'd:\sample data dir\',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = 'Sales_log',
FILENAME = 'd:\sample log dir\',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB )
GO