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

Si applica a:SQL Server

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. 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.

    È 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 si crea una copia del database AdventureWorks2022 denominato MyAdventureWorks. Le istruzioni Transact-SQL vengono eseguite in una finestra dell'editor di query connessa all'istanza del server a cui è collegata.

  1. Scollegare il database AdventureWorks2022 eseguendo le istruzioni Transact-SQL riportate di seguito:

    USE master;  
    GO  
    EXEC sp_detach_db @dbname = N'AdventureWorks2022';  
    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. Il formato di un nome UNC è \\Servername\Sharename\Path\Filename. Come per la scrittura di file nel disco rigido locale, è necessario che l'account utente utilizzato dall'istanza di SQL Server disponga delle autorizzazioni appropriate per la lettura o la scrittura di un file nel disco remoto.

  3. Collegare il database spostato e, facoltativamente, collegare il relativo log tramite l'esecuzione delle istruzioni Transact-SQL seguenti:

    USE master;  
    GO  
    CREATE DATABASE MyAdventureWorks   
        ON (FILENAME = 'C:\MySQLServer\AdventureWorks2022_Data.mdf'),  
        (FILENAME = 'C:\MySQLServer\AdventureWorks2022_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.

Vedi anche

Collegamento e scollegamento di un database (SQL Server)