Spostamento di un database tramite la funzionalità di scollegamento e collegamento (Transact-SQL)Move a Database Using Detach and Attach (Transact-SQL)

In questo argomento si illustra come spostare un database scollegato in un'altra posizione e come ricollegarlo alla stessa istanza oppure a un'altra istanza del server in SQL Server 2017SQL Server 2017.This topic describes how to move a detached database to another location and re-attach it to the same or a different server instance in SQL Server 2017SQL Server 2017. Tuttavia, è consigliabile spostare i database utilizzando la procedura di rilocazione pianificata ALTER DATABASE anziché la funzionalità di scollegamento e collegamento.However, we recommend that you move databases by using the ALTER DATABASE planned relocation procedure, instead of using detach and attach. Per altre informazioni, vedere Spostare database utente.For more information, see Move User Databases.

Importante

È consigliabile evitare di collegare o ripristinare database provenienti da origini sconosciute o non attendibili.We recommend that you do not attach or restore 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 usare un database da un'origine sconosciuta o non attendibile, eseguire DBCC CHECKDB sul database in un server non di produzione ed esaminare anche il codice contenuto nel database, ad esempio le stored procedure o altro codice definito dall'utente.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.

ProceduraProcedure

Per spostare un database utilizzando la funzionalità di scollegamento e collegamentoTo move a database by using detach and attach

  1. Scollegare il database.Detach the database. Per altre informazioni, vedere Scollegare un database.For more information, see Detach a Database.

  2. In Esplora risorse o in una finestra del prompt dei comandi di Windows spostare nella nuova posizione il file o i file del database scollegato e i relativi file di log.In a Windows Explorer or Windows Command Prompt window, move the detached database file or files and log file or files to the new location.

    Nota

    Per spostare un database composto da un singolo file è possibile utilizzare la posta elettronica se le dimensioni del file sono sufficientemente ridotte.To move a single-file database, you can use email if the file size is small enough for email to accommodate.

    È consigliabile spostare i file di log anche se si prevede di crearne di nuovi.You should move the log files even if you intend to create new log files. In alcuni casi, per il ricollegamento di un database sono necessari i file di log esistenti.In some cases, reattaching a database requires its existing log files. Mantenere pertanto sempre tutti i file di log scollegati fino a quando il database non è stato collegato senza di essi.Therefore, always keep all the detached log files until the database has been successfully attached without them.

    Nota

    Se si tenta di collegare il database senza specificare il file di log, verrà eseguita una ricerca di tale file nella relativa posizione originale.If you try to attach the database without specifying the log file, the attach operation will look for the log file in its original location. Se nella posizione originale esiste ancora una copia del log, verrà collegata tale copia.If a copy of the log still exists in the original location, that copy is attached. Per evitare di utilizzare il file di log originale, specificare il percorso del nuovo file di log oppure rimuovere la copia originale del file di log dopo averlo copiato nella nuova posizione.To avoid using the original log file, either specify the path of the new log file or remove the original copy of the log file (after copying it to the new location).

  3. Collegare i file copiati.Attach the copied files. Per altre informazioni, vedere Attach a Database.For more information, see Attach a Database.

EsempioExample

Nell'esempio seguente si crea una copia del database AdventureWorks2012AdventureWorks2012 denominata MyAdventureWorks.The following example creates a copy of the AdventureWorks2012AdventureWorks2012 database named MyAdventureWorks. Le istruzioni Transact-SQLTransact-SQL vengono eseguite in una finestra dell'editor di query connessa all'istanza del server a cui è collegata.The Transact-SQLTransact-SQL statements are executed in a Query Editor window that is connected to the server instance to which is attached.

  1. Scollegare il database AdventureWorks2012AdventureWorks2012 eseguendo le istruzioni Transact-SQLTransact-SQL seguenti:Detach the AdventureWorks2012AdventureWorks2012 database by executing the following Transact-SQLTransact-SQL statements:

    USE master;  
    GO  
    EXEC sp_detach_db @dbname = N'AdventureWorks2012';  
    GO  
    
  2. Copiare i file di database (AdventureWorks208R2_Data.mdf e AdventureWorks208R2_log) rispettivamente in: C:\MySQLServer\AdventureWorks208R2_Data.mdf e C:\MySQLServer\AdventureWorks208R2_Log.ldf, utilizzando il metodo desiderato.Using the method of your choice, copy the database files (AdventureWorks208R2_Data.mdf and AdventureWorks208R2_log) to: C:\MySQLServer\AdventureWorks208R2_Data.mdf and C:\MySQLServer\AdventureWorks208R2_Log.ldf, respectively.

    Importante

    Nel caso di un database di produzione, posizionare su dischi separati il database e il log delle transazioni.For a production database, place the database and transaction log on separate disks.

    Per copiare i file in rete su un disco di un computer remoto, utilizzare il nome UNC (Universal Naming Convention) della posizione remota.To copy files over the network to a disk on a remote computer, use the universal naming convention (UNC) name of the remote location. Il formato di un nome UNC è \\Servername\Sharename\Path\Filename.A UNC name takes the form \\Servername\Sharename\Path\Filename. Come per la scrittura di file nel disco rigido locale, è necessario che l'account utente utilizzato dall'istanza di SQL ServerSQL Serverdisponga delle autorizzazioni appropriate per la lettura o la scrittura di un file nel disco remoto.As with writing files to the local hard disk, the appropriate permissions that are required to read or write to a file on the remote disk must be granted to the user account used by the instance of SQL ServerSQL Server.

  3. Collegare il database spostato e, facoltativamente, collegare il relativo log tramite l'esecuzione delle istruzioni Transact-SQLTransact-SQL seguenti:Attach the moved database and, optionally, its log by executing the following Transact-SQLTransact-SQL statements:

    USE master;  
    GO  
    CREATE DATABASE MyAdventureWorks   
        ON (FILENAME = 'C:\MySQLServer\AdventureWorks2012_Data.mdf'),  
        (FILENAME = 'C:\MySQLServer\AdventureWorks2012_Log.ldf')  
        FOR ATTACH;  
    GO  
    

    In SQL Server Management StudioSQL Server Management Studioun database appena collegato non è immediatamente visibile in Esplora oggetti.In SQL Server Management StudioSQL Server Management Studio, a newly attached database is not immediately visible in Object Explorer. Per visualizzarlo, in Esplora oggetti scegliere Aggiorna dal menu Visualizza.To view the database, in Object Explorer, click View, and then Refresh. Quando si espande il nodo Database in Esplora oggetti, il database appena collegato viene visualizzato nell'elenco dei database.When the Databases node is expanded in Object Explorer, the newly attached database now appears in the list of databases.

Vedere ancheSee Also

Collegamento e scollegamento di un database (SQL Server)Database Detach and Attach (SQL Server)