CREATE DATABASE (Transact-SQL di SQL Server)CREATE DATABASE (SQL Server Transact-SQL)

QUESTO ARGOMENTO SI APPLICA A:sìSQL Server (a partire dalla versione 2008)noDatabase SQL di AzurenoAzure SQL Data Warehouse noParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Crea un nuovo database e i file utilizzati per archiviare il database, uno snapshot del database oppure collega un database dai file scollegati di un database creato in precedenza.Creates a new database and the files used to store the database, a database snapshot, or attaches a database from the detached files of a previously created database.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintassiSyntax


      Create a database  
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 }  
}  

<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 ]  
}  

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

      Attach a 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 } )  
}  

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

ArgomentiArguments

database_namedatabase_name
Nome del nuovo database.Is the name of the new database. I nomi di database devono essere univoci all'interno di un'istanza di SQL ServerSQL Server ed essere conforme alle regole per identificatori.Database names must be unique within an instance of SQL ServerSQL Server and comply with the rules for identifiers.

database_name può contenere un massimo di 128 caratteri, a meno che non è specificato un nome logico del file di log.database_name can be a maximum of 128 characters, unless a logical name is not specified for the log file. Se non è stato specificato un nome di file di log logico, SQL ServerSQL Server genera il nome_file_logico e os_file_name per il log accodando un suffisso per database_name.If a logical log file name is not specified, SQL ServerSQL Server generates the logical_file_name and the os_file_name for the log by appending a suffix to database_name. Questo limita database_name di 123 caratteri in modo che il nome di file logico generato non più di 128 caratteri.This limits database_name to 123 characters so that the generated logical file name is no more than 128 characters.

Se non è stato specificato alcun nome file di dati, SQL ServerSQL Server Usa database_name sia il nome_file_logico e come il os_file_name.If data file name is not specified, SQL ServerSQL Server uses database_name as both the logical_file_name and as the os_file_name. Il percorso predefinito viene ottenuto dal Registro di sistema.The default path is obtained from the registry. Il percorso predefinito può essere modificato utilizzando il proprietà Server (pagina Impostazioni Database) in Management StudioManagement Studio.The default path can be changed by using the Server Properties (Database Settings Page) in Management StudioManagement Studio. La modifica del percorso predefinito richiede il riavvio di SQL ServerSQL Server.Changing the default path requires restarting SQL ServerSQL Server.

CONTAINMENT = { NONE | PARTIAL }CONTAINMENT = { NONE | PARTIAL }

Si applica a: SQL Server 2012SQL Server 2012 tramite SQL Server 2017SQL Server 2017Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017

Viene specificato lo stato di indipendenza del database.Specifies the containment status of the database. NONE = Database non indipendente.NONE = non-contained database. PARTIAL = database parzialmente indipendente.PARTIAL = partially contained database.

ONON
Specifica che i file su disco utilizzati per archiviare le sezioni di dati del database (file di dati) vengono definiti in modo esplicito.Specifies that the disk files used to store the data sections of the database, data files, are explicitly defined. ON è obbligatorio quando è seguito da un elenco delimitato da virgole di <filespec > gli elementi che definiscono i file di dati per il filegroup primario.ON is required when followed by a comma-separated list of <filespec> items that define the data files for the primary filegroup. L'elenco di file nel filegroup primario può essere seguito da un elenco facoltativo delimitato da virgole di <filegroup > elementi che definiscono i filegroup utente e i file.The list of files in the primary filegroup can be followed by an optional, comma-separated list of <filegroup> items that define user filegroups and their files.

PRIMARYPRIMARY
Specifica che l'oggetto associato <filespec > elenco definisce il file primario.Specifies that the associated <filespec> list defines the primary file. Il primo file specificato nella <filespec > voce nel filegroup primario diventa il file primario.The first file specified in the <filespec> entry in the primary filegroup becomes the primary file. Un database può includere un solo file primario.A database can have only one primary file. Per altre informazioni, vedere Database Files and Filegroups.For more information, see Database Files and Filegroups.

Se la parola chiave PRIMARY viene omessa, il primo file elencato nell'istruzione CREATE DATABASE diventa il file primario.If PRIMARY is not specified, the first file listed in the CREATE DATABASE statement becomes the primary file.

LOG ONLOG ON
Specifica che i file su disco utilizzati per archiviare il log del database (file di log) vengono definiti in modo esplicito.Specifies that the disk files used to store the database log, log files, are explicitly defined. LOG ON è seguito da un elenco delimitato da virgole di <filespec > elementi che definiscono i file di log.LOG ON is followed by a comma-separated list of <filespec> items that define the log files. Se la parola chiave LOG ON viene omessa, viene creato automaticamente un singolo file di log con dimensioni pari al 25% della somma delle dimensioni di tutti i file di dati del database o pari a 512 KB, a seconda del valore maggiore.If LOG ON is not specified, one log file is automatically created, which has a size that is 25 percent of the sum of the sizes of all the data files for the database, or 512 KB, whichever is larger. Questo file viene posizionato nel percorso predefinito del file di log.This file is placed in the default log-file location. Per informazioni su questo percorso, vedere consente di visualizzare o modificare i percorsi predefiniti per i dati e i file di Log ( SQL Server Management Studio ) .For information about this location, see View or Change the Default Locations for Data and Log Files (SQL Server Management Studio).

Non è possibile specificare LOG ON in uno snapshot del database.LOG ON cannot be specified on a database snapshot.

COLLATE collation_nameCOLLATE collation_name
Specifica le regole di confronto predefinite per il database.Specifies the default collation for the database. È possibile usare nomi di regole di confronto di Windows o SQL.Collation name can be either a Windows collation name or a SQL collation name. Se collation_name viene omesso, al database vengono assegnate le regole di confronto predefinite dell'istanza di SQL ServerSQL Server.If not specified, the database is assigned the default collation of the instance of SQL ServerSQL Server. Non è possibile specificare un nome di regole di confronto in uno snapshot del database.A collation name cannot be specified on a database snapshot.

Non è possibile specificare un nome di regole di confronto con le clausole FOR ATTACH o FOR ATTACH_REBUILD_LOG.A collation name cannot be specified with the FOR ATTACH or FOR ATTACH_REBUILD_LOG clauses. Per informazioni su come modificare le regole di confronto di un database collegato, visitare sito Web Microsoft.For information about how to change the collation of an attached database, visit this Microsoft Web site.

Per ulteriori informazioni sui nomi delle regole di confronto Windows e SQL, vedere COLLATE ( Transact-SQL ) .For more information about the Windows and SQL collation names, see COLLATE (Transact-SQL).

Nota

Le regole di confronto per i database indipendenti sono diverse rispetto a quelle dei database non indipendenti.Contained databases are collated differently than non-contained databases. Vedere Contained Database Collations per ulteriori informazioni.Please see Contained Database Collations for more information.

CON <opzione >WITH <option>

  • <filestream_options ><filestream_options>

    NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | COMPLETA}NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL }
    Si applica a: SQL Server 2012SQL Server 2012 tramite SQL Server 2017SQL Server 2017.Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

    Specifica il livello di accesso FILESTREAM non transazionale al database.Specifies the level of non-transactional FILESTREAM access to the database.

    valoreValue DescriptionDescription
    OFFOFF L'accesso non transazionale è disabilitato.Non-transactional access is disabled.
    READONLYREADONLY I dati FILESTREAM di questo database possono essere letti da processi non transazionali.FILESTREAM data in this database can be read by non-transactional processes.
    FULLFULL L'accesso non transazionale completo a tabelle FileTable FILESTREAM è abilitato.Full non-transactional access to FILESTREAM FileTables is enabled.

    DIRECTORY_NAME = <directory_name > si applica a: SQL Server 2012SQL Server 2012 tramite SQL Server 2017SQL Server 2017DIRECTORY_NAME = <directory_name> Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017

    Nome di directory compatibile con Windows.A windows-compatible directory name. Il nome deve essere univoco in tutti i nomi di Database_Directory nell'istanza di SQL ServerSQL Server.This name should be unique among all the Database_Directory names in the SQL ServerSQL Server instance. Il confronto di univocità non supporta la distinzione tra maiuscole e minuscole, indipendentemente dalle impostazioni delle regole di confronto di SQL ServerSQL Server.Uniqueness comparison is case-insensitive, regardless of SQL ServerSQL Server collation settings. È necessario impostare questa opzione prima di creare una tabella FileTable in questo database.This option should be set before creating a FileTable in this database.

    Le opzioni seguenti sono consentite solo quando CONTAINMENT è stato impostato su PARTIAL.The following options are allowable only when CONTAINMENT has been set to PARTIAL. Se l'opzione CONTAINMENT è impostata su NONE, si verificheranno errori.If CONTAINMENT is set to NONE, errors will occur.

  • DEFAULT_FULLTEXT_LANGUAGE = <lcid > | <nome lingua > | <alias di lingua >DEFAULT_FULLTEXT_LANGUAGE = <lcid> | <language name> | <language alias>

Si applica a: SQL Server 2012SQL Server 2012 tramite SQL Server 2017SQL Server 2017Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017

 See [Configure the default full-text language Server Configuration Option](../../database-engine/configure-windows/configure-the-default-full-text-language-server-configuration-option.md) for a full description of this option.  
  • DEFAULT_LANGUAGE = <lcid > | <nome lingua > | <alias di lingua >DEFAULT_LANGUAGE = <lcid> | <language name> | <language alias>

Si applica a: SQL Server 2012SQL Server 2012 tramite SQL Server 2017SQL Server 2017Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017

 See [Configure the default language Server Configuration Option](../../database-engine/configure-windows/configure-the-default-language-server-configuration-option.md) for a full description of this option.  
  • NESTED_TRIGGERS = {OFF | ON}NESTED_TRIGGERS = { OFF | ON}

Si applica a: SQL Server 2012SQL Server 2012 tramite SQL Server 2017SQL Server 2017Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017

 See [Configure the nested triggers Server Configuration Option](../../database-engine/configure-windows/configure-the-nested-triggers-server-configuration-option.md) for a full description of this option.  
  • TRANSFORM_NOISE_WORDS = {OFF | ON}TRANSFORM_NOISE_WORDS = { OFF | ON}

Si applica a: SQL Server 2012SQL Server 2012 tramite SQL Server 2017SQL Server 2017Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017

 See [transform noise words Server Configuration Option](../../database-engine/configure-windows/transform-noise-words-server-configuration-option.md)for a full description of this option.  
  • TWO_DIGIT_YEAR_CUTOFF = {2049 | <qualsiasi anno compreso tra 1753 e 9999 >}TWO_DIGIT_YEAR_CUTOFF = { 2049 | <any year between 1753 and 9999> }

    Quattro cifre che rappresentano un anno.Four digits representing a year. Il valore predefinito è 2049.2049 is the default value. Vedere configurare l'anno a due cifre cutoff Server Configuration Option per una descrizione completa di questa opzione.See Configure the two digit year cutoff Server Configuration Option for a full description of this option.

  • DB_CHAINING {OFF | ON}DB_CHAINING { OFF | ON }

    Se l'opzione è impostata su ON, il database può essere l'origine o la destinazione di una catena di proprietà tra database.When ON is specified, the database can be the source or target of a cross-database ownership chain.

    Se l'opzione è impostata su OFF, il database non può partecipare alla catena di proprietà tra database.When OFF, the database cannot participate in cross-database ownership chaining. Il valore predefinito è OFF.The default is OFF.

    Importante

    Questa impostazione viene riconosciuta dall'istanza di SQL ServerSQL Server quando l'opzione del server cross db ownership chaining è impostata su 0 (OFF).The instance of SQL ServerSQL Server will recognize this setting when the cross db ownership chaining server option is 0 (OFF). Quando cross db ownership chaining è 1 (ON), tutti i database utente possono partecipare ai concatenamenti della proprietà tra database, a prescindere dal valore di questa opzione.When cross db ownership chaining is 1 (ON), all user databases can participate in cross-database ownership chains, regardless of the value of this option. Questa opzione viene impostata tramite sp_configure.This option is set by using sp_configure.

    Per impostare questa opzione è richiesta l'appartenenza al ruolo predefinito del server sysadmin.To set this option, requires membership in the sysadmin fixed server role. L'opzione DB_CHAINING non può essere impostata in questi database di sistema: master, model, tempdb.The DB_CHAINING option cannot be set on these system databases: master, model, tempdb.

  • TRUSTWORTHY {OFF | ON}TRUSTWORTHY { OFF | ON }

    Se l'opzione è impostata su ON, i moduli del database (ad esempio le viste, le funzioni definite dall'utente o le stored procedure) che utilizzano un contesto di rappresentazione possono accedere alle risorse esterne al database.When ON is specified, database modules (for example, views, user-defined functions, or stored procedures) that use an impersonation context can access resources outside the database.

    Se l'opzione è impostata su OFF, i moduli del database in un conteso di rappresentazione non possono accedere alle risorse esterne al database.When OFF, database modules in an impersonation context cannot access resources outside the database. Il valore predefinito è OFF.The default is OFF.

    L'opzione TRUSTWORTHY viene impostata su OFF ogni volta che il database viene collegato.TRUSTWORTHY is set to OFF whenever the database is attached.

    Per impostazione predefinita, in tutti i database di sistema, a eccezione del database msdb, TRUSTWORTHY è impostata su OFF.By default, all system databases except the msdb database have TRUSTWORTHY set to OFF. Per i database model e tempdb questo valore non può essere modificato.The value cannot be changed for the model and tempdb databases. È consigliabile evitare di impostare l'opzione TRUSTWORTHY su ON per il database master.We recommend that you never set the TRUSTWORTHY option to ON for the master database.

    Per impostare questa opzione è richiesta l'appartenenza al ruolo predefinito del server sysadmin.To set this option, requires membership in the sysadmin fixed server role.

    FOR ATTACH [WITH < attach_database_option >] Specifica che il database viene creato da collegamento un set di file del sistema operativo esistente.FOR ATTACH [ WITH < attach_database_option > ] Specifies that the database is created by attaching an existing set of operating system files. Deve essere presente un <filespec > voce che specifica il file primario.There must be a <filespec> entry that specifies the primary file. L'unico altro <filespec > voci necessarie sono quelle relative ai file con un percorso diverso rispetto a quando il database è stato creato o ultimo collegamento.The only other <filespec> entries required are those for any files that have a different path from when the database was first created or last attached. Oggetto <filespec > voce deve essere specificata per questi file.A <filespec> entry must be specified for these files.

    FOR ATTACH richiede le seguenti condizioni:FOR ATTACH requires the following:

  • Tutti i file di dati (MDF e NDF) devono essere disponibili.All data files (MDF and NDF) must be available.

  • Tutti i file di log esistenti devono essere disponibili.If multiple log files exist, they must all be available.

    Se un database in lettura/scrittura contiene un singolo file di log attualmente non disponibile, e il database è stato chiuso senza utenti o transazioni aperte prima dell'operazione di collegamento, FOR ATTACH ricompila automaticamente il file di log e aggiorna il file primario.If a read/write database has a single log file that is currently unavailable, and if the database was shut down with no users or open transactions before the attach operation, FOR ATTACH automatically rebuilds the log file and updates the primary file. Per un database in sola lettura, invece, non è possibile ricostruire il log perché il file primario non può essere aggiornato.In contrast, for a read-only database, the log cannot be rebuilt because the primary file cannot be updated. Pertanto, quando si collega un database in sola lettura a un log non disponibile, è necessario specificare i file o i file di log nella clausola FOR ATTACH.Therefore, when you attach a read-only database with a log that is unavailable, you must provide the log files, or the files in the FOR ATTACH clause.

Nota

Un database creato con una versione più recente di SQL ServerSQL Server non può essere collegato con versioni precedenti.A database created by a more recent version of SQL ServerSQL Server cannot be attached in earlier versions.

In SQL ServerSQL Server tutti i file full-text inclusi nel database che viene collegato verranno collegati insieme al database.In SQL ServerSQL Server, any full-text files that are part of the database that is being attached will be attached with the 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.To specify a new path of the full-text catalog, specify the new location without the full-text operating system file name. Per altre informazioni, vedere la sezione Esempi.For more information, see the Examples section.

Collegamento di un database che contiene un'opzione FILESTREAM di "Nome Directory", in un SQL ServerSQL Server istanza richiederà SQL ServerSQL Server per verificare che il nome di Database_Directory sia univoco.Attaching a database that contains a FILESTREAM option of "Directory name", into a SQL ServerSQL Server instance will prompt SQL ServerSQL Server to verify that the Database_Directory name is unique. In caso contrario, l'operazione di collegamento ha esito negativo con l'errore "nome di Database_Directory FILESTREAM <nome > non è univoco in questa istanza SQL Server".If it is not, the attach operation fails with the error, "FILESTREAM Database_Directory name <name> is not unique in this SQL Server instance". Per evitare questo errore, il parametro facoltativo, directory_name, deve essere passato a questa operazione.To avoid this error, the optional parameter, directory_name, should be passed in to this operation.

Non è possibile specificare FOR ATTACH in uno snapshot del database.FOR ATTACH cannot be specified on a database snapshot.

FOR ATTACH può specificare l'opzione RESTRICTED_USER.FOR ATTACH can specify the RESTRICTED_USER option. RESTRICTED_USER consente la connessione al database solo ai membri del ruolo predefinito del database db_owner e ai membri dei ruoli predefiniti del server dbcreator e sysadmin, senza tuttavia imporre un limite al numero di connessioni.RESTRICTED_USER allows for only members of the db_owner fixed database role and dbcreator and sysadmin fixed server roles to connect to the database, but does not limit their number. Tentativi dagli utenti non qualificati vengono rifiutati.Attempts by unqualified users are refused.

Se il database utilizza Service BrokerService Broker, utilizzare WITH <service_broker_option > nella clausola FOR ATTACH:If the database uses Service BrokerService Broker, use the WITH <service_broker_option> in your FOR ATTACH clause:

<service_broker_option > controlli Service BrokerService Broker recapito dei messaggi e Service BrokerService Broker identificatore per il database.<service_broker_option> Controls Service BrokerService Broker message delivery and the Service BrokerService Broker identifier for the database. È possibile specificare le opzioni di Service BrokerService Broker solo quando viene utilizzata la clausola FOR ATTACH. Service BrokerService Broker options can only be specified when the FOR ATTACH clause is used.

ENABLE_BROKERENABLE_BROKER
Indica che Service BrokerService Broker è abilitato per il database specificato.Specifies that Service BrokerService Broker is enabled for the specified database. Vale a dire, viene avviato il recapito dei messaggi e is_broker_enabled è impostato su true nella vista del catalogo sys. Databases.That is, message delivery is started, and is_broker_enabled is set to true in the sys.databases catalog view. Il database mantiene l'identificatore di Service BrokerService Broker esistente.The database retains the existing Service BrokerService Broker identifier.

NEW_BROKERNEW_BROKER
Crea un nuovo valore di service_broker_guid sia in sys.databases che nel database ripristinato e termina tutti gli endpoint di conversazione con l'eliminazione.Creates a new service_broker_guid value in both sys.databases and the restored database and ends all conversation endpoints with clean up. Service Broker è abilitato, ma agli endpoint di conversazione remoti non viene inviato alcun messaggio.The broker is enabled, but no message is sent to the remote conversation endpoints. Tutte le route che fanno riferimento all'identificatore di Service BrokerService Broker precedente devono essere ricreate con il nuovo identificatore.Any route that references the old Service BrokerService Broker identifier must be re-created with the new identifier.

ERROR_BROKER_CONVERSATIONSERROR_BROKER_CONVERSATIONS
Termina tutte le conversazioni e restituisce un errore che indica che il database è collegato o ripristinato.Ends all conversations with an error stating that the database is attached or restored. Service Broker viene disabilitato fino al termine dell'operazione e quindi viene riabilitato.The broker is disabled until this operation is completed and then enabled. Il database mantiene l'identificatore di Service BrokerService Broker esistente.The database retains the existing Service BrokerService Broker identifier.

Quando si collega un database replicato copiato anziché scollegato, è necessario considerare quanto segue:When you attach a replicated database that was copied instead of being detached, consider the following:

  • Se si collega il database alla stessa istanza del server e alla stessa versione del database originale, non sono necessari passaggi aggiuntivi.If you attach the database to the same server instance and version as the original database, no additional steps are required.

  • Se si collega il database all'istanza del server stesso, ma con una versione aggiornata, è necessario eseguire sp_vupgrade_replication per aggiornare la replica al termine dell'operazione di collegamento.If you attach the database to the same server instance but with an upgraded version, you must execute sp_vupgrade_replication to upgrade replication after the attach operation is complete.

  • Se si collega il database a un'istanza di server diverso, indipendentemente dalla versione, è necessario eseguire sp_removedbreplication per rimuovere la replica al termine dell'operazione di collegamento.If you attach the database to a different server instance, regardless of version, you must execute sp_removedbreplication to remove replication after the attach operation is complete.

Nota

Collegamento supporta il vardecimal il formato di archiviazione, ma la Motore di database di SQL ServerSQL Server Database Engine deve essere aggiornato almeno a SQL Server 2005SQL Server 2005 Service Pack 2.Attach works with the vardecimal storage format, but the Motore di database di SQL ServerSQL Server Database Engine must be upgraded to at least SQL Server 2005SQL Server 2005 Service Pack 2. Non è possibile collegare un database con un formato di archiviazione vardecimal a una versione precedente di SQL ServerSQL Server.You cannot attach a database using vardecimal storage format to an earlier version of SQL ServerSQL Server. Per ulteriori informazioni sul vardecimal il formato di archiviazione, vedere la compressione dei dati.For more information about the vardecimal storage format, see Data Compression.

Quando un database viene collegato per la prima volta a una nuova istanza di SQL ServerSQL Servero ripristinato, nel server non è ancora archiviata una copia della chiave master del database, crittografata dalla chiave master del servizio.When a database is first attached or restored to a new instance of SQL ServerSQL Server, a copy of the database master key (encrypted by the service master key) is not yet stored in the server. È necessario usare l'istruzione OPEN MASTER KEY per decrittografare la chiave master del database.You must use the OPEN MASTER KEY statement to decrypt the database master key (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).Once the DMK has been decrypted, you have the option of enabling automatic decryption in the future by using the ALTER MASTER KEY REGENERATE statement to provision the server with a copy of the DMK, encrypted with the service master key (SMK). Quando un database è stato aggiornato da una versione precedente, la DMK deve essere rigenerata per usare l'algoritmo AES più recente.When a database has been upgraded from an earlier version, the DMK should be regenerated to use the newer AES algorithm. Per altre informazioni sulla rigenerazione della DMK, vedere ALTER MASTER KEY (Transact-SQL).For more information about regenerating the DMK, see ALTER MASTER KEY (Transact-SQL). Il tempo richiesto per rigenerare la chiave DMK e aggiornarla ad AES dipende dal numero di oggetti protetti dalla DMK.The time required to regenerate the DMK key to upgrade to AES depends upon the number of objects protected by the DMK. È necessario rigenerare la chiave DMK per l'aggiornamento ad AES una sola volta e l'operazione non influenza le rigenerazioni future che fanno parte di una strategia di rotazione della chiave.Regenerating the DMK key to upgrade to AES is only necessary once, and has no impact on future regenerations as part of a key rotation strategy. Per informazioni su come aggiornare un database tramite collegamento, vedere aggiornare un Database utilizzando scollegamento e collegamento ( Transact-SQL ) .For information about how to upgrade a database by using attach, see Upgrade a Database Using Detach and Attach (Transact-SQL).

Nota sulla sicurezza è consigliabile non collegare database provenienti da origini sconosciute o non attendibili.Security Note We recommend that you do not attach databases from unknown or untrusted sources. Tali database possono contenere codice dannoso che potrebbe eseguire codice Transact-SQLTransact-SQL indesiderato o causare errori modificando lo schema o la struttura fisica di database.Such databases could contain malicious code that might execute unintended Transact-SQLTransact-SQL code or cause errors by modifying the schema or the physical database structure. Prima di utilizzare un database da un'origine sconosciuta o non attendibile, eseguire DBCC CHECKDB sul database in un server di produzione ed esaminare inoltre il codice, ad esempio stored procedure o altro codice definito dall'utente nel database.Before you use a database from an unknown or untrusted source, run DBCC CHECKDB on the database on a nonproduction server, and also examine the code, such as stored procedures or other user-defined code, in the database.

Nota

Il TRUSTWORTHY e DB_CHAINING opzioni non hanno alcun effetto quando si collega un database.The TRUSTWORTHY and DB_CHAINING options have no affect when attaching a database.

FOR ATTACH_REBUILD_LOGFOR ATTACH_REBUILD_LOG
Specifica che il database viene creato collegando un set di file del sistema operativo già esistente.Specifies that the database is created by attaching an existing set of operating system files. Questa opzione è limitata ai database in lettura/scrittura.This option is limited to read/write databases. Deve essere presente un <filespec > voce che specifica il file primario.There must be a <filespec> entry specifying the primary file. Se uno o più file di log delle transazioni sono mancanti, il file di log viene ricostruito.If one or more transaction log files are missing, the log file is rebuilt. Il log ATTACH_REBUILD_LOG crea automaticamente un nuovo file di log da 1 MB.The ATTACH_REBUILD_LOG automatically creates a new, 1 MB log file. Questo file viene posizionato nel percorso predefinito del file di log.This file is placed in the default log-file location. Per informazioni su questo percorso, vedere consente di visualizzare o modificare i percorsi predefiniti per i dati e i file di Log ( SQL Server Management Studio ) .For information about this location, see View or Change the Default Locations for Data and Log Files (SQL Server Management Studio).

Nota

Se i file di log sono disponibili, Motore di databaseDatabase Engine utilizza questi file invece di ricompilare i file di log.If the log files are available, the Motore di databaseDatabase Engine uses those files instead of rebuilding the log files.

FOR ATTACH_REBUILD_LOG richiede le seguenti condizioni:FOR ATTACH_REBUILD_LOG requires the following:

  • Una chiusura normale del database.A clean shutdown of the database.

  • Tutti i file di dati (MDF e NDF) devono essere disponibili.All data files (MDF and NDF) must be available.

Importante

Questa operazione interrompe la catena di backup del log.This operation breaks the log backup chain. È consigliabile eseguire un backup completo del database al termine dell'operazione.We recommend that a full database backup be performed after the operation is completed. Per altre informazioni, vedere BACKUP (Transact-SQL).For more information, see BACKUP (Transact-SQL).

In genere, l'opzione FOR ATTACH_REBUILD_LOG viene utilizzata quando si copia un database in lettura/scrittura con un log di grandi dimensioni in un altro server dove la copia verrà utilizzata principalmente, o esclusivamente, per operazioni di lettura e richiederà quindi una quantità minore di spazio di log rispetto al database originale.Typically, FOR ATTACH_REBUILD_LOG is used when you copy a read/write database with a large log to another server where the copy will be used mostly, or only, for read operations, and therefore requires less log space than the original database.

Non è possibile specificare FOR ATTACH_REBUILD_LOG in uno snapshot del database.FOR ATTACH_REBUILD_LOG cannot be specified on a database snapshot.

Per ulteriori informazioni sul collegamento e scollegamento di database, vedere Database scollegamento e collegamento ( SQL Server ) .For more information about attaching and detaching databases, see Database Detach and Attach (SQL Server).

<filespec ><filespec>
Controlla le proprietà del file.Controls the file properties.

NOME nome_file_logicoNAME logical_file_name
Specifica il nome logico per il file.Specifies the logical name for the file. Il parametro NAME è necessario quando FILENAME è specificato, eccetto quando viene specificata una delle clausole FOR ATTACH.NAME is required when FILENAME is specified, except when specifying one of the FOR ATTACH clauses. Non è possibile assegnare il nome PRIMARY a un filegroup FILESTREAM.A FILESTREAM filegroup cannot be named PRIMARY.

nome_file_logicological_file_name
Nome logico utilizzato in SQL ServerSQL Server per fare riferimento al file.Is the logical name used in SQL ServerSQL Server when referencing the file. Nome_file_logico deve essere univoco nel database e conforme alle regole per identificatori.Logical_file_name must be unique in the database and comply with the rules for identifiers. Il nome può essere un carattere o una costante Unicode oppure un identificatore normale o delimitato.The name can be a character or Unicode constant, or a regular or delimited identifier.

Nome del file { 'os_file_name' | 'filestream_path ' }FILENAME { 'os_file_name' | 'filestream_path' }
Specifica il nome del file (fisico) del sistema operativo.Specifies the operating system (physical) file name.

' os_file_name '' os_file_name '
Percorso e nome di file utilizzato dal sistema operativo quando si crea il file.Is the path and file name used by the operating system when you create the file. Il file deve risiedere in uno dei dispositivi seguenti: il server locale in cui è installato SQL ServerSQL Server, una rete di archiviazione (SAN) o una rete basata su iSCSI.The file must reside on one of the following devices: the local server on which SQL ServerSQL Server is installed, a Storage Area Network [SAN], or an iSCSI-based network. Il percorso specificato deve essere esistente prima dell'esecuzione dell'istruzione CREATE DATABASE.The specified path must exist before executing the CREATE DATABASE statement. Per altre informazioni, vedere "Filegroup e file di database" nella sezione Osservazioni.For more information, see "Database Files and Filegroups" in the Remarks section.

È possibile impostare i parametri SIZE, MAXSIZE e FILEGROWTH se è specificato un percorso UNC per il file.SIZE, MAXSIZE, and FILEGROWTH parameters can be set when a UNC path is specified for the file.

Se il file si trova in una partizione non elaborata, os_file_name deve specificare solo la lettera di unità di una partizione non elaborata esistente.If the file is on a raw partition, os_file_name must specify only the drive letter of an existing raw partition. È possibile creare soltanto un file di dati su ogni partizione non formattata dal sistema operativo.Only one data file can be created on each raw partition.

I file di dati non devono essere archiviati in file system compressi a meno che non si tratti di file secondari in sola lettura o il database non sia in sola lettura.Data files should not be put on compressed file systems unless the files are read-only secondary files, or the database is read-only. I file di log non devono mai essere archiviati in file system compressi.Log files should never be put on compressed file systems.

' filestream_path '' filestream_path '
Per un filegroup FILESTREAM, FILENAME si riferisce a un percorso in cui verrà archiviato FILESTREAM.For a FILESTREAM filegroup, FILENAME refers to a path where FILESTREAM data will be stored. È necessario che il percorso fino all'ultima cartella esista già, mentre l'ultima cartella non deve essere presente.The path up to the last folder must exist, and the last folder must not exist. Se, ad esempio, si specifica il percorso C:\MyFiles\MyFilestreamData, C:\MyFiles deve esistere già prima di eseguire ALTER DATABASE, mentre la cartella MyFilestreamData non deve essere presente.For example, if you specify the path C:\MyFiles\MyFilestreamData, C:\MyFiles must exist before you run ALTER DATABASE, but the MyFilestreamData folder must not exist.

Il filegroup e il file (<filespec>) devono essere creati nella stessa istruzione.The filegroup and file (<filespec>) must be created in the same statement.

Le proprietà SIZE e FILEGROWTH non si applicano a un filegroup FILESTREAM.The SIZE and FILEGROWTH properties do not apply to a FILESTREAM filegroup.

DIMENSIONI dimensioniSIZE size
Specifica le dimensioni del file.Specifies the size of the file.

DIMENSIONE non può essere specificato quando il os_file_name viene specificato come un percorso UNC.SIZE cannot be specified when the os_file_name is specified as a UNC path. SIZE non si applica a un filegroup FILESTREAM.SIZE does not apply to a FILESTREAM filegroup.

sizesize
Dimensioni iniziali del file.Is the initial size of the file.

Quando dimensioni non viene fornito per il file primario, il Motore di databaseDatabase Engine utilizza le dimensioni del file primario nel database modello.When size is not supplied for the primary file, the Motore di databaseDatabase Engine uses the size of the primary file in the model database. Le dimensioni predefinite del modello sono 8 MB (a partire da SQL Server 2016SQL Server 2016) o 1 MB (per le versioni precedenti).The default size of model is 8 MB (beginning with SQL Server 2016SQL Server 2016) or 1 MB (for earlier versions). Quando viene specificato un file di dati secondario o di un file di log, ma dimensioni non è specificato per il file, il Motore di databaseDatabase Engine crea un file 8 MB (a partire da SQL Server 2016SQL Server 2016) o 1 MB (per le versioni precedenti).When a secondary data file or log file is specified, but size is not specified for the file, the Motore di databaseDatabase Engine makes the file 8 MB (beginning with SQL Server 2016SQL Server 2016) or 1 MB (for earlier versions). Le dimensioni specificate per il file di dati primario devono essere uguali almeno alle dimensioni del file primario del database model.The size specified for the primary file must be at least as large as the primary file of the model database.

È possibile usare i suffissi per kilobyte (KB), megabyte (MB), gigabyte (GB) e terabyte (TB).The kilobyte (KB), megabyte (MB), gigabyte (GB), or terabyte (TB) suffixes can be used. Il valore predefinito è MB.The default is MB. Specificare un numero intero, ovvero non includere decimali.Specify a whole number; do not include a decimal. Dimensioni è un valore integer.Size is an integer value. Per i valori superiori a 2.147.483.647, usare le unità maggiori.For values greater than 2147483647, use larger units.

MAXSIZE max_sizeMAXSIZE max_size
Valore massimo fino a cui possono aumentare le dimensioni del file.Specifies the maximum size to which the file can grow. MAXSIZE non può essere specificato quando il os_file_name viene specificato come un percorso UNC.MAXSIZE cannot be specified when the os_file_name is specified as a UNC path.

max_sizemax_size
Dimensioni massime del file.Is the maximum file size. È possibile usare i suffissi KB, MB, GB e TB.The KB, MB, GB, and TB suffixes can be used. Il valore predefinito è MB.The default is MB. Specificare un numero intero, ovvero non includere decimali.Specify a whole number; do not include a decimal. Se max_size non viene specificato, il file aumenta fino a quando il disco è pieno.If max_size is not specified, the file grows until the disk is full. Max_size è un valore integer.Max_size is an integer value. Per i valori superiori a 2.147.483.647, usare le unità maggiori.For values greater than 2147483647, use larger units.

UNLIMITEDUNLIMITED
Specifica che le dimensioni del file aumentano fino a quando il disco risulta pieno.Specifies that the file grows until the disk is full. In SQL ServerSQL Server, un file di log specificato con aumento delle dimensioni illimitato può raggiungere una dimensione massima di 2 TB, mentre un file di dati può raggiungere una dimensione massima di 16 TB.In SQL ServerSQL Server, a log file specified with unlimited growth has a maximum size of 2 TB, and a data file has a maximum size of 16 TB.

Nota

Non vi sono dimensioni massime se questa opzione viene specificata per un contenitore FILESTREAM,There is no maximum size when this option is specified for a FILESTREAM container. il quale continua a crescere finché il disco non è pieno.It continues to grow until the disk is full.

FILEGROWTH growth_incrementFILEGROWTH growth_increment
Specifica l'incremento automatico per l'aumento delle dimensioni del file.Specifies the automatic growth increment of the file. Il valore impostato per il parametro FILEGROWTH di un file non può essere superiore al valore del parametro MAXSIZE.The FILEGROWTH setting for a file cannot exceed the MAXSIZE setting. FILEGROWTH non può essere specificato quando il os_file_name viene specificato come un percorso UNC.FILEGROWTH cannot be specified when the os_file_name is specified as a UNC path. FILEGROWTH non si applica a un filegroup FILESTREAM.FILEGROWTH does not apply to a FILESTREAM filegroup.

growth_incrementgrowth_increment
Quantità di spazio aggiunta al file ogni volta che è necessario spazio aggiuntivo.Is the amount of space added to the file every time new space is required.

È possibile specificare il valore in megabyte (MB), kilobyte (KB), gigabyte (GB) o terabyte (TB) oppure in forma di percentuale (%).The value can be specified in MB, KB, GB, TB, or percent (%). Se si specifica un valore senza il suffisso MB, KB o %, il suffisso predefinito è MB.If a number is specified without an MB, KB, or % suffix, the default is MB. Se si utilizza il suffisso %, l'incremento corrisponde alla percentuale delle dimensioni del file specificata quando si verifica l'incremento.When % is specified, the growth increment size is the specified percentage of the size of the file at the time the increment occurs. Le dimensioni specificate viene arrotondata al blocco di 64 KB più vicino e il valore minimo è 64 KB.The size specified is rounded to the nearest 64 KB, and the minimum value is 64 KB.

Un valore 0 indica che l'opzione per l'aumento automatico è disattivata e non è consentito spazio aggiuntivo.A value of 0 indicates that automatic growth is off and no additional space is allowed.

Se FILEGROWTH viene omesso, i valori predefiniti sono:If FILEGROWTH is not specified, the default values are:

VersioneVersion Valori predefinitiDefault values
Inizio SQL Server 2016SQL Server 2016Beginning SQL Server 2016SQL Server 2016 Dati 64 MB.Data 64 MB. File di log 64 MB.Log files 64 MB.
Inizio SQL Server 2005SQL Server 2005Beginning SQL Server 2005SQL Server 2005 Dati 1 MB.Data 1 MB. File di log % 10.Log files 10%.
Nelle versioni precedenti a SQL Server 2005SQL Server 2005Prior to SQL Server 2005SQL Server 2005 Dati del 10%.Data 10%. File di log % 10.Log files 10%.

<filegroup ><filegroup>
Controlla le proprietà del filegroup.Controls the filegroup properties. Non è possibile specificare il filegroup in uno snapshot del database.Filegroup cannot be specified on a database snapshot.

FILEGROUP filegroup_nameFILEGROUP filegroup_name
Nome logico del filegroup.Is the logical name of the filegroup.

filegroup_namefilegroup_name
filegroup_name deve essere univoco nel database e non possono essere nomi forniti dal sistema PRIMARY e PRIMARY_LOG.filegroup_name must be unique in the database and cannot be the system-provided names PRIMARY and PRIMARY_LOG. Il nome può essere un carattere o una costante Unicode oppure un identificatore normale o delimitato.The name can be a character or Unicode constant, or a regular or delimited identifier. Il nome deve essere conforme alle regole per identificatori.The name must comply with the rules for identifiers.

CONTAINS FILESTREAMCONTAINS FILESTREAM
Specifica che tramite il filegroup vengono archiviati oggetti binari di grandi dimensioni (BLOB) nel file system.Specifies that the filegroup stores FILESTREAM binary large objects (BLOBs) in the file system.

CONTAINS MEMORY_OPTIMIZED_DATACONTAINS MEMORY_OPTIMIZED_DATA

Si applica a: SQL Server 2014SQL Server 2014 tramite SQL Server 2017SQL Server 2017Applies to: SQL Server 2014SQL Server 2014 through SQL Server 2017SQL Server 2017

Specifica che il filegroup archivia i dati memory_optimized nel file system.Specifies that the filegroup stores memory_optimized data in the file system. Per altre informazioni, vedere OLTP in memoria (ottimizzazione in memoria).For more information, see In-Memory OLTP (In-Memory Optimization). È ammesso un solo filegroup MEMORY_OPTIMIZED_DATA per database.Only one MEMORY_OPTIMIZED_DATA filegroup is allowed per database. Per esempi di codice che crea un filegroup per archiviare i dati con ottimizzazione per la memoria, vedere la creazione di una tabella con ottimizzazione per la memoria e un'in modo nativo Stored Procedure compilata.For code samples that create a filegroup to store memory-optimized data, see Creating a Memory-Optimized Table and a Natively Compiled Stored Procedure.

DEFAULTDEFAULT
Indica che il filegroup specificato è il filegroup predefinito nel database.Specifies the named filegroup is the default filegroup in the database.

database_snapshot_namedatabase_snapshot_name
Nome del nuovo snapshot del database.Is the name of the new database snapshot. I nomi dei database devono essere univoci all'interno di un'istanza d SQL ServerSQL Server e devono essere conformi alle regole per gli identificatori.Database snapshot names must be unique within an instance of SQL ServerSQL Server and comply with the rules for identifiers. database_snapshot_name può contenere un massimo di 128 caratteri.database_snapshot_name can be a maximum of 128 characters.

ON ( nome = nome_file_logico, FILENAME =' os_file_name') [ ,... n ]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.For creating a database snapshot, specifies a list of files in the source database. Per il funzionamento dello snapshot, è necessario specificare tutti i file di dati singolarmente.For the snapshot to work, all the data files must be specified individually. I file di log non sono tuttavia consentiti per gli snapshot del database.However, log files are not allowed for database snapshots. I filegroup FILESTREAM non sono supportati dagli snapshot del database.FILESTREAM filegroups are not supported by database snapshots. Se un file di dati FILESTREAM è incluso in una clausola CREATE DATABASE ON, l'istruzione non verrà eseguita e sarà generato un errore.If a FILESTREAM data file is included in a CREATE DATABASE ON clause, the statement will fail and an error will be raised.

Per le descrizioni di NAME e FILENAME e i relativi valori, vedere le descrizioni dell'equivalente <filespec > valori.For descriptions of NAME and FILENAME and their values see the descriptions of the equivalent <filespec> values.

Nota

Quando si crea uno snapshot del database, l'altro <filespec > Opzioni e la parola chiave PRIMARY non sono consentiti.When you create a database snapshot, the other <filespec> options and the keyword PRIMARY are disallowed.

AS SNAPSHOT OF source_database_nameAS SNAPSHOT OF source_database_name
Specifica che il database viene creato uno snapshot del database del database di origine specificato da source_database_name.Specifies that the database being created is a database snapshot of the source database specified by source_database_name. Lo snapshot e il database di origine devono essere archiviati nella stessa istanza.The snapshot and source database must be on the same instance.

Per altre informazioni, vedere "Snapshot di database" nella sezione Osservazioni.For more information, see "Database Snapshots" in the Remarks section.

OsservazioniRemarks

Il database master deve essere eseguito ogni volta che viene creato, modificato o eliminato un database utente.The master database should be backed up whenever a user database is created, modified, or dropped.

L'istruzione CREATE DATABASE deve essere eseguita in modalità autocommit, la modalità predefinita per la gestione delle transazioni, e non è consentita in una transazione esplicita o implicita.The CREATE DATABASE statement must run in autocommit mode (the default transaction management mode) and is not allowed in an explicit or implicit transaction.

È possibile usare un'istruzione CREATE DATABASE per creare un database e i file che lo archiviano.You can use one CREATE DATABASE statement to create a database and the files that store the database. SQL ServerSQL Server implementa l'istruzione CREATE DATABASE tramite i passaggi seguenti: implements the CREATE DATABASE statement by using the following steps:

  1. Il SQL ServerSQL Server utilizza una copia del database modello per inizializzare il database e i relativi metadati.The SQL ServerSQL Server uses a copy of the model database to initialize the database and its metadata.

  2. Un GUID di Service Broker viene assegnato al database.A service broker GUID is assigned to the database.

  3. Il Motore di databaseDatabase Engine compila quindi la parte rimanente del database con pagine vuote, ad eccezione delle pagine con dati interni che registrano la modalità di utilizzo dello spazio nel database.The Motore di databaseDatabase Engine then fills the rest of the database with empty pages, except for pages that have internal data that records how the space is used in the database.

    In un'istanza di SQL ServerSQL Serverè possibile specificare al massimo 32.767 database.A maximum of 32,767 databases can be specified on an instance of SQL ServerSQL Server.

    Ogni database ha un proprietario che può eseguire attività particolari nel database.Each database has an owner that can perform special activities in the database. Il proprietario è l'utente che crea il database.The owner is the user that creates the database. Il proprietario del database può essere modificato utilizzando sp_changedbowner.The database owner can be changed by using sp_changedbowner.

Alcune funzionalità di database dipendono dalle caratteristiche o funzionalità presenti nel file system per la funzionalità completa di un database.Some database features depend on features or capabilities present in the file system for full functionality of a database. Alcuni esempi di funzionalità che dipendono dal set di funzionalità di sistema di file:Some examples of features that depend on file system feature set include:

  • DBCC CHECKDBDBCC CHECKDB
  • FileStreamFileStream
  • Utilizzo degli snapshot VSS, volume e i file di backup in lineaOnline backups using VSS and file snapshots
  • Creazione di snapshot del databaseDatabase snapshot creation
  • Filegroup di dati con ottimizzazione per la memoriaMemory Optimized Data filegroup

Filegroup e file di databaseDatabase Files and Filegroups

Ogni database ha almeno due file, un file primario e file di log delle transazionie almeno un filegroup.Every database has at least two files, a primary file and a transaction log file, and at least one filegroup. Per ogni database è possibile specificare un massimo di 32.767 file e 32.767 filegroup.A maximum of 32,767 files and 32,767 filegroups can be specified for each database.

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.When you create a database, make the data files as large as possible based on the maximum amount of data you expect in the database

Per l'archiviazione dei file di database di SQL ServerSQL Server è consigliabile usare una rete di archiviazione (SAN), una rete basata su iSCSI o un disco collegato localmente, poiché questa configurazione ottimizza le prestazioni e l'affidabilità di SQL ServerSQL Server.We recommend that you use a Storage Area Network (SAN), iSCSI-based network, or locally attached disk for the storage of your SQL ServerSQL Server database files, because this configuration optimizes SQL ServerSQL Server performance and reliability.

Snapshot di databaseDatabase Snapshots

È possibile utilizzare l'istruzione CREATE DATABASE per creare una vista statica di sola lettura, un snapshot del database del database di origine.You can use the CREATE DATABASE statement to create a read-only, static view, a database snapshot of the source database. Uno snapshot del database è consistente dal punto di vista transazionale con il database di origine al momento della creazione dello snapshot.A database snapshot is transactionally consistent with the source database as it existed at the time when the snapshot was created. Un database di origine può avere più snapshot.A source database can have multiple snapshots.

Nota

Quando si crea uno snapshot di database, l'istruzione CREATE DATABASE non può far riferimento a file di log, file offline, file di ripristino e file inattivi.When you create a database snapshot, the CREATE DATABASE statement cannot reference log files, offline files, restoring files, and defunct files.

Se la creazione di uno snapshot di database ha esito negativo, lo snapshot diventa sospetto e deve essere eliminato.If creating a database snapshot fails, the snapshot becomes suspect and must be deleted. Per ulteriori informazioni, vedere DROP DATABASE ( Transact-SQL ) .For more information, see DROP DATABASE (Transact-SQL).

Ogni snapshot viene mantenuto fino a quando non viene eliminato tramite DROP DATABASE.Each snapshot persists until it is deleted by using DROP DATABASE.

Per altre informazioni, vedere Snapshot del database (SQL Server).For more information, see Database Snapshots (SQL Server).

Opzioni di databaseDatabase Options

Quando si crea un database, vengono impostate automaticamente diverse opzioni.Several database options are automatically set whenever you create a database. Per un elenco di queste opzioni, vedere opzioni ALTER DATABASE SET ( Transact-SQL ) .For a list of these options, see ALTER DATABASE SET Options (Transact-SQL).

Database modello e creazione di nuovi databaseThe model Database and Creating New Databases

Tutti gli oggetti definiti dall'utente nel database modello vengono copiati tutti i database appena creati.All user-defined objects in the model database are copied to all newly created databases. È possibile aggiungere al database model qualsiasi oggetto che si desidera includere in tutti i database appena creati, ad esempio tabelle, viste, stored procedure, tipi di dati e così via.You can add any objects, such as tables, views, stored procedures, data types, and so on, to the model database to be included in all newly created databases.

Quando un DATABASE creare database_name istruzione viene specificata senza parametri delle dimensioni aggiuntivi, il file di dati primario vengono utilizzate le stesse dimensioni del file primario nel database modello.When a CREATE DATABASE database_name statement is specified without additional size parameters, the primary data file is made the same size as the primary file in the model database.

A meno che non si specifichi FOR ATTACH, ogni nuovo database eredita le impostazioni delle opzioni di database dal database model.Unless FOR ATTACH is specified, each new database inherits the database option settings from the model database. Ad esempio, la compattazione automatica opzione di database è impostata su true nel modello e in tutti i nuovi database creati.For example, the database option auto shrink is set to true in model and in any new databases you create. Se si modificano le opzioni nel database model, queste nuove impostazioni vengono utilizzate in tutti i nuovi database creati.If you change the options in the model database, these new option settings are used in any new databases you create. La modifica delle operazioni nel database model non ha effetto sui database esistenti.Changing operations in the model database does not affect existing databases. Se viene specificata l'opzione FOR ATTACH nell'istruzione CREATE DATABASE, i nuovi database ereditano le impostazioni delle opzioni di database dal database originale.If FOR ATTACH is specified on the CREATE DATABASE statement, the new database inherits the database option settings of the original database.

Visualizzazione delle informazioni sui databaseViewing Database Information

Per restituire informazioni su database, file e filegroup, è possibile usare viste del catalogo, funzioni di sistema e stored procedure di sistema.You can use catalog views, system functions, and system stored procedures to return information about databases, files, and filegroups. Per altre informazioni, vedere Viste di sistema (Transact-SQL).For more information, see System Views (Transact-SQL).

AutorizzazioniPermissions

È richiesta l'autorizzazione CREATE DATABASE, CREATE ANY DATABASE o ALTER ANY DATABASE.Requires CREATE DATABASE, CREATE ANY DATABASE, or ALTER ANY DATABASE permission.

Per mantenere il controllo sull'utilizzo del disco per un'istanza di SQL ServerSQL Server, l'autorizzazione per la creazione dei database è in genere limitata a pochi account di accesso.To maintain control over disk use on an instance of SQL ServerSQL Server, permission to create databases is typically limited to a few login accounts.

Nell'esempio seguente viene fornita l'autorizzazione per creare un database per l'utente del database Fay.The following example provides the permission to create a database to the database user Fay.

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

Autorizzazioni per i file di dati e di logPermissions on Data and Log Files

In SQL ServerSQL Server vengono impostate autorizzazioni specifiche per i file di dati e di log in ogni database.In SQL ServerSQL Server, certain permissions are set on the data and log files of each database. Le autorizzazioni seguenti vengono impostate quando le operazioni elencate di seguito vengono eseguite in un database.The following permissions are set whenever the following operations are applied to a database:

Data creazioneCreated Modifica per l'aggiunta di un nuovo fileModified to add a new file
CollegamentoAttached Esecuzione del backupBacked up
ScollegamentoDetached RipristinoRestored

Con le autorizzazioni è possibile evitare che vengano accidentalmente alterati i file che si trovano in una directory con autorizzazioni aperte.The permissions prevent the files from being accidentally tampered with if they reside in a directory that has open permissions.

Nota

In MicrosoftMicrosoft SQL Server 2005 Express EditionSQL Server 2005 Express Edition non vengono impostate autorizzazioni per i file di dati e di log. MicrosoftMicrosoft SQL Server 2005 Express EditionSQL Server 2005 Express Edition does not set data and log file permissions.

EsempiExamples

A.A. Creazione di un database senza specificare i fileCreating a database without specifying files

Nell'esempio seguente viene creato il database mytest insieme al file di log delle transazioni e al file primario corrispondenti.The following example creates the database mytest and creates a corresponding primary and transaction log file. Poiché non contiene l'istruzione <filespec > elementi, il file di database primario è la dimensione del file primario del database modello.Because the statement has no <filespec> items, the primary database file is the size of the model database primary file. Il file di log delle transazioni viene impostato sul valore più grande tra 512 KB o il 25% delle dimensioni del file di dati primario.The transaction log is set to the larger of these values: 512KB or 25% the size of the primary data file. Poiché MAXSIZE non è specificato, le dimensioni dei file possono aumentare fino a riempire lo spazio disponibile su disco.Because MAXSIZE is not specified, the files can grow to fill all available disk space. In questo esempio viene inoltre illustrato come eliminare l'eventuale database denominato mytest prima di creare il database mytest.This example also demonstrates how to drop the database named mytest if it exists, before creating the mytest database.

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.B. Creazione di un database che specifica i file di dati e i file di log delle transazioniCreating a database that specifies the data and transaction log files

Nell'esempio seguente viene creato il database Sales.The following example creates the database Sales. Dal momento che la parola chiave PRIMARY non è specificata, il primo file, cioè Sales_dat, corrisponde al file primario.Because the keyword PRIMARY is not used, the first file (Sales_dat) becomes the primary file. Poiché nel parametro SIZE non viene specificato il suffisso MB o KB per le dimensioni del file Sales_dat , viene utilizzato MB e le dimensioni del file vengono allocate in megabyte.Because neither MB nor KB is specified in the SIZE parameter for the Sales_dat file, it uses MB and is allocated in megabytes. Il backup del database Sales_log vengono allocate in megabyte perché nel parametro MB è stato specificato in modo esplicito il suffisso SIZE .The Sales_log file is allocated in megabytes because the MB suffix is explicitly stated in the SIZE parameter.

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

C.C. Creazione di un database specificando più file di dati e più file di log delle transazioniCreating a database by specifying multiple data and transaction log files

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.The following example creates the database Archive that has three 100-MB data files and two 100-MB transaction log files. Il file primario è il primo file dell'elenco e viene specificato in modo esplicito con la parola chiave PRIMARY.The primary file is the first file in the list and is explicitly specified with the PRIMARY keyword. I file di log delle transazioni vengono specificati dopo le parole chiave LOG ON.The transaction log files are specified following the LOG ON keywords. 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.Note the extensions used for the files in the FILENAME option: .mdf is used for primary data files, .ndf is used for the secondary data files, and .ldf is used for transaction log files. In questo esempio il database viene collocato nell'unità D: anziché con il database master.This example places the database on the D: drive instead of with the master database.

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

D.D. Creazione di un database con filegroupCreating a database that has filegroups

Nell'esempio seguente viene creato il database Sales che include i filegroup seguenti:The following example creates the database Sales that has the following filegroups:

  • Il filegroup primario con i file Spri1_dat e Spri2_dat.The primary filegroup with the files Spri1_dat and Spri2_dat. Gli incrementi specificati nel parametro FILEGROWTH per tali file corrispondono al 15%.The FILEGROWTH increments for these files are specified as 15%.

  • Un filegroup SalesGroup1 con i file SGrp1Fi1 e SGrp1Fi2.A filegroup named SalesGroup1 with the files SGrp1Fi1 and SGrp1Fi2.

  • Un filegroup SalesGroup2 con i file SGrp2Fi1 e SGrp2Fi2.A filegroup named SalesGroup2 with the files SGrp2Fi1 and SGrp2Fi2.

    In questo esempio i file di dati e di log vengono collocati in dischi diversi al fine di migliorare le prestazioni.This example places the data and log files on different disks to improve performance.

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

E.E. Collegamento di un databaseAttaching a database

Nell'esempio seguente viene scollegato il database Archive creato nell'esempio D, quindi viene collegato tramite la clausola FOR ATTACH.The following example detaches the database Archive created in example D, and then attaches it by using the FOR ATTACH clause. Archive è stato definito in modo da avere più dati e file di log.Archive was defined to have multiple data and log files. Tuttavia, poiché il percorso dei file non è stato modificato dopo la creazione, deve essere specificato solo il file primario nella clausola FOR ATTACH.However, because the location of the files has not changed since they were created, only the primary file has to be specified in the FOR ATTACH clause. A partire da SQL Server 2005SQL Server 2005, tutti i file full-text inclusi nel database in fase di collegamento verranno collegati assieme al database.Beginning with SQL Server 2005SQL Server 2005, any full-text files that are part of the database that is being attached will be attached with the database.

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

F.F. Creazione di uno snapshot del databaseCreating a database snapshot

Nell'esempio seguente viene creato lo snapshot di database sales_snapshot0600.The following example creates the database snapshot sales_snapshot0600. Poiché uno snapshot di database è in sola lettura, non è possibile specificare un file di log.Because a database snapshot is read-only, a log file cannot be specified. In conformità con la sintassi, viene specificato ogni file nel database di origine, mentre i filegroup non vengono specificati.In conformance with the syntax, every file in the source database is specified, and filegroups are not specified.

Il database di origine per questo esempio è il database Sales creato nell'esempio D.The source database for this example is the Sales database created in example 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.G. Creazione di un database e specifica di un nome delle regole di confronto e delle opzioniCreating a database and specifying a collation name and options

Nell'esempio seguente viene creato il database MyOptionsTest.The following example creates the database MyOptionsTest. Viene specificato un nome delle regole di confronto e le opzioni TRUSTYWORTHY e DB_CHAINING vengono impostate su ON.A collation name is specified and the TRUSTYWORTHY and DB_CHAINING options are set to 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.H. Collegamento di un catalogo full-text che è stato spostatoAttaching a full-text catalog that has been moved

Nell'esempio seguente viene collegato il catalogo full-text AdvWksFtCat insieme ai file di log e di dati di AdventureWorks2012.The following example attaches the full-text catalog AdvWksFtCat along with the AdventureWorks2012 data and log files. In questo esempio, il catalogo full-text viene spostato dalla posizione predefinita in una nuova posizione c:\myFTCatalogs.In this example, the full-text catalog is moved from its default location to a new location c:\myFTCatalogs. I file di dati e di log rimangono nelle posizioni predefinite.The data and log files remain in their default locations.

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

I.I. Creazione di un database che specifica un filegroup di righe e due filegroup FILESTREAMCreating a database that specifies a row filegroup and two FILESTREAM filegroups

Nell'esempio seguente viene creato il database FileStreamDB.The following example creates the FileStreamDB database. Il database viene creato con un filegroup di righe e due filegroup FILESTREAM.The database is created with one row filegroup and two FILESTREAM filegroups. Ogni filegroup contiene un file:Each filegroup contains one file:

  • FileStreamDB_data contiene dati delle righe.FileStreamDB_data contains row data. Contiene un file, FileStreamDB_data.mdf, con il percorso predefinito.It contains one file, FileStreamDB_data.mdf with the default path.

  • FileStreamPhotos contiene dati FILESTREAM.FileStreamPhotos contains FILESTREAM data. Contiene due contenitori di dati FILESTREAM, FSPhotos nel percorso C:\MyFSfolder\Photos e FSPhotos2 nel percorso D:\MyFSfolder\Photos.It contains two FILESTREAM data containers, FSPhotos, located at C:\MyFSfolder\Photos and FSPhotos2, located at D:\MyFSfolder\Photos. È contrassegnato come filegroup FILESTREAM predefinito.It is marked as the default FILESTREAM filegroup.

  • FileStreamResumes contiene dati FILESTREAM.FileStreamResumes contains FILESTREAM data. Contiene un contenitore di dati FILESTREAM, ossia FSResumes nel percorso C:\MyFSfolder\Resumes.It contains one FILESTREAM data container, FSResumes, located at C:\MyFSfolder\Resumes.

USE master;  
GO  
-- Get the SQL Server data path.  
DECLARE @data_path nvarchar(256);  
SET @data_path = (SELECT SUBSTRING(physical_name, 1, CHARINDEX(N'master.mdf', LOWER(physical_name)) - 1)  
                  FROM master.sys.master_files  
                  WHERE database_id = 1 AND file_id = 1);  

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

J.J. Creazione di un database contenente un filegroup FILESTREAM con più fileCreating a database that has a FILESTREAM filegroup with multiple files

Nell'esempio seguente viene creato il database BlobStore1.The following example creates the BlobStore1 database. Il database viene creato con un filegroup di righe e un filegroup FILESTREAM, FS.The database is created with one row filegroup and one FILESTREAM filegroup, FS. Nel filegroup FILESTREAM sono contenuti due file, vale a dire FS1 e FS2.The FILESTREAM filegroup contains two files, FS1 and FS2. Successivamente il database viene modificato con l'aggiunta di un terzo file, FS3, al filegroup FILESTREAM.Then the database is altered by adding a third file, FS3, to the FILESTREAM filegroup.

USE master;  
GO  

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

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

Vedere ancheSee Also

ALTER DATABASE (Transact-SQL) ALTER DATABASE (Transact-SQL)
Collegamento e scollegamento di un database (SQL Server) Database Detach and Attach (SQL Server)
DROP DATABASE (Transact-SQL) DROP DATABASE (Transact-SQL)
EVENTDATA (Transact-SQL) EVENTDATA (Transact-SQL)
sp_changedbowner ( Transact-SQL ) sp_changedbowner (Transact-SQL)
sp_detach_db ( Transact-SQL ) sp_detach_db (Transact-SQL)
sp_removedbreplication ( Transact-SQL ) sp_removedbreplication (Transact-SQL)
Snapshot del database (SQL Server) Database Snapshots (SQL Server)
Spostare file del database Move Database Files
Database Databases
Dati BLOB (Binary Large Object) (SQL Server)Binary Large Object (Blob) Data (SQL Server)