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

ms187858.note(it-it,SQL.90).gifImportante:
È consigliabile spostare i database utilizzando la procedura di rilocazione pianificata ALTER DATABASE anziché la funzionalità di scollegamento e collegamento. Per ulteriori informazioni, vedere ALTER DATABASE (Transact-SQL).

È possibile spostare un database scollegato in un'altra posizione e ricollegarlo alla stessa istanza oppure a un'altra istanza del server.

ms187858.security(it-it,SQL.90).gifNota sulla protezione:
È consigliabile non collegare o ripristinare database da origini sconosciute o non attendibili. Questi database potrebbero contenere malware che può eseguire codice Transact-SQL imprevisto o causare errori tramite la modifica dello schema o della 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 nel database, ad esempio le stored procedure o altro codice definito dall'utente.

Grazie ai miglioramenti apportati alla stored procedure sp_detach_db in Microsoft SQL Server 2005, i file degli indici full-text associati a un database non vengono eliminati quando si scollega il database. Per ulteriori informazioni, vedere Collegamento e scollegamento di cataloghi full-text.

ms187858.note(it-it,SQL.90).gifNota:
È inoltre possibile utilizzare la funzionalità di scollegamento e collegamento per aggiornare un database di SQL Server versione 7.0 o SQL Server 2000 a SQL Server 2005. Per ulteriori informazioni, vedere Procedura: Aggiornamento di un database utilizzando le operazioni di scollegamento e collegamento (Transact-SQL).

Per copiare un database utilizzando la funzionalità di scollegamento e collegamento
  1. Scollegare il database utilizzando la stored procedure sp_detach_db.

  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.

    ms187858.note(it-it,SQL.90).gifNota:
    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.

    ms187858.note(it-it,SQL.90).gifNota:
    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. Per collegare i file copiati, utilizzare l'istruzione Transact-SQL CREATE DATABASE con la clausola FOR ATTACH [ WITH <service_broker_option> ] o la clausola FOR ATTACH_REBUILD_LOG. Per ulteriori informazioni, vedere CREATE DATABASE (Transact-SQL)). Ogni database contiene un identificatore univoco per il routing dei messaggi di Service Broker a tale database. Se il database utilizza Service Broker, vedere Gestione delle identità di Service Broker.

    ms187858.note(it-it,SQL.90).gifNota:
    Per informazioni sul collegamento di un database tramite Esplora oggetti, vedere Procedura: Collegamento di un database (SQL Server Management Studio).

Nell'esempio seguente viene creata una copia del database AdventureWorks denominata MyAdventureWorks. Le istruzioni Transact-SQL vengono eseguite in una finestra dell'editor di query connessa all'istanza del server a cui è collegato AdventureWorks.

  1. Scollegare il database AdventureWorks eseguendo le istruzioni Transact-SQL seguenti:
    USE master;
    GO
    EXEC sp_detach_db @dbname = N'AdventureWorks';
    GO
    
  2. Copiare i file di database (AdventureWorks_Data.mdf e AdventureWorks_log) rispettivamente in: C:\MySQLServer\AdventureWorks_Data.mdf e C:\MySQLServer\AdventureWorks_Log.ldf, utilizzando il metodo desiderato.
    ms187858.note(it-it,SQL.90).gifImportante:
    Per un database di produzione, posizionare il database e il log delle transazioni su dischi separati.

    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 presenta il formato \\Nomeserver\Nomecondivisione\Percorso\Nomefile. 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\AdventureWorks_Data.mdf'),
        (FILENAME = 'C:\MySQLServer\AdventureWorks_Log.ldf')
        FOR ATTACH;
    GO
    
    ms187858.note(it-it,SQL.90).gifNota:
    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.

Aggiunte alla community

AGGIUNGI
Mostra: