Condividi tramite


Spostamento di un database tramite la funzionalità di scollegamento e collegamento (Transact-SQL)

In questo argomento viene descritto come spostare un database scollegato in un altro percorso e ricollegarlo alla stessa o a un'istanza del server diversa in SQL Server 2014. Tuttavia, è consigliabile spostare i database utilizzando la procedura di rilocazione pianificata ALTER DATABASE anziché la funzionalità di scollegamento e collegamento. Per altre informazioni, vedere Spostare database utente.

Importante

È consigliabile evitare di collegare o ripristinare database provenienti da origini sconosciute o non attendibili. Tali database possono contenere codice dannoso che potrebbe eseguire codice Transact-SQL indesiderato o causare errori modificando lo schema o la struttura fisica del database. Prima di utilizzare un database da un'origine sconosciuta o non attendibile, eseguire DBCC CHECKDB sul database in un server non di produzione ed esaminare il codice contenuto nel database, ad esempio le stored procedure o altro codice definito dall'utente.

Procedura

Per spostare un database utilizzando la funzionalità di scollegamento e collegamento

  1. Scollegare il database. Per altre informazioni, vedere Scollegare un 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.

    Nota

    Per spostare un database composto da un singolo file è possibile utilizzare la posta elettronica se le dimensioni del file sono sufficientemente ridotte.

    È consigliabile spostare i file di log anche se si prevede di crearne di nuovi. In alcuni casi, per il ricollegamento di un database sono necessari i file di log esistenti. Mantenere pertanto sempre tutti i file di log scollegati fino a quando il database non è stato collegato senza di essi.

    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. Se nella posizione originale esiste ancora una copia del log, verrà collegata tale copia. 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.

  3. Collegare i file copiati. Per altre informazioni, vedere Attach a Database.

Esempio

Nell'esempio seguente viene creata una copia delle istruzioni Transact-SQL eseguite in una finestra Editor di query connessa all'istanza del server a cui è associata.

  1. Scollegare le istruzioni Transact-SQL:

    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.

    Importante

    Nel caso di un database di produzione, posizionare su dischi separati il database e il log delle transazioni.

    Per copiare i file in rete su un disco di un computer remoto, utilizzare il nome UNC (Universal Naming Convention) della posizione remota. Un nome UNC accetta il nome \\nome server\nome\\percorso. Come per la scrittura di file nel disco rigido locale, le autorizzazioni appropriate necessarie per leggere o scrivere in un file nel disco remoto devono essere concesse all'account utente usato dall'istanza di SQL Server.

  3. Collegare il database spostato e, facoltativamente, il relativo log eseguendo le istruzioni Transact-SQL seguenti:

    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 Studio un database appena collegato non è immediatamente visibile in Esplora oggetti. Per visualizzarlo, in Esplora oggetti scegliere Aggiorna dal menu Visualizza. Quando si espande il nodo Database in Esplora oggetti, il database appena collegato viene visualizzato nell'elenco dei database.

Vedere anche

Collegamento e scollegamento di un database (SQL Server)