Procedura: Aggiornamento di un database utilizzando le operazioni di scollegamento e collegamento (Transact-SQL)

Data aggiornamento: 5 dicembre 2005

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

In SQL Server 2005 è possibile utilizzare le operazioni di scollegamento e collegamento per aggiornare un database utente da SQL Server versione 7.0 o SQL Server 2000. Esistono tuttavia le limitazioni seguenti:

  • Le copie di backup del database master, model o msdb create con SQL Server 7.0 o SQL Server 2000 non possono essere collegate in SQL Server 2005.
  • I file di log di SQL Server 7.0 che contengono operazioni di creazione di indici non possono essere collegati in SQL Server 2000 o SQL Server 2005.
ms189625.note(it-it,SQL.90).gifImportante:
I backup del database creati con SQL Server 6.5 o versioni precedenti utilizzano un formato non compatibile e non possono essere collegati in SQL Server 2005.
  • Quando si collega un database replicato che è stato copiato anziché scollegato:
    • Se si collega il database a una versione aggiornata della stessa istanza del server, è necessario eseguire sp_vupgrade_replication per aggiornare la replica al termine dell'operazione di collegamento. Per ulteriori informazioni, vedere sp_vupgrade_replication (Transact-SQL).
    • Se si collega il database a un'istanza del server diversa (indipendentemente dalla versione), è necessario eseguire sp_removedbreplication per rimuovere la replica al termine dell'operazione di collegamento. Per ulteriori informazioni, vedere sp_removedbreplication (Transact-SQL).

Quando si utilizza la parola chiave APPLY, PIVOT, TABLESAMPLE o UNPIVOT sui database aggiornati a SQL Server 2005, è necessario che il livello di compatibilità del database sia impostato su 90. Per impostare il livello di compatibilità del database, vedere sp_dbcmptlevel (Transact-SQL).

ms189625.note(it-it,SQL.90).gifImportante:
   In SQL Server 2000 Service Pack 3 (SP3) e nelle versioni successive di SQL Server le operazioni di collegamento e scollegamento disattivano il concatenamento della proprietà tra database impostando l'opzione cross db ownership chaining su 0. Per informazioni sull'attivazione del concatenamento, vedere Opzione cross db ownership chaining.

Procedure

Per aggiornare un database utilizzando le operazioni di scollegamento e collegamento

  1. Scollegare il database dall'istanza di SQL Server 7.0 o SQL Server 2000 utilizzando la stored procedure sp_detach_db.

    Per ulteriori informazioni, vedere la documentazione in linea di SQL Server relativa a tale versione di SQL Server.

    [!NOTA] In SQL Server 2005 la stored procedure dispone di nuove opzioni. Per ulteriori informazioni, vedere sp_detach_db (Transact-SQL).

  2. Spostare facoltativamente il file o i file del database scollegato e il file o i file di log.

    È consigliabile spostare i file di log insieme ai file di dati anche se si prevede di creare nuovi file di log. 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 in questa posizione esiste ancora la copia originale 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 all'istanza di SQL Server 2005 utilizzando l'istruzione CREATE DATABASE con l'opzione FOR ATTACH o FOR ATTACH_REBUILD_LOG.

    [!NOTA] Per informazioni sul collegamento di un database di SQL Server 2005 mediante Esplora oggetti, vedere Procedura: Collegamento di un database (SQL Server Management Studio).

  4. È consigliabile eseguire DBCC UPDATEUSAGE sul database aggiornato.

    Nelle versioni precedenti di SQL Server i valori relativi al conteggio delle righe delle tabelle e degli indici e al conteggio delle pagine potrebbero non essere più corretti. È quindi possibile che nei database creati con versioni precedenti a SQL Server 2005 i conteggi non siano corretti. Dopo aver aggiornato un database a SQL Server 2005, è consigliabile eseguire DBCC UPDATEUSAGE per correggere eventuali conteggi non validi. Questa istruzione DBCC corregge i conteggi relativi a righe, pagine utilizzate, pagine riservate, pagine foglia e pagine di dati per ogni partizione in una tabella o indice. Per ulteriori informazioni, vedere DBCC UPDATEUSAGE (Transact-SQL).

  5. Se si crea una copia del database anziché spostarlo, è possibile ricollegare il database originale nell'istanza di SQL Server 7.0 o SQL Server 2000 utilizzando la stored procedure sp_attach_db o sp_attach_single_file_db.

    Per ulteriori informazioni, vedere la documentazione in linea di SQL Server relativa a tale versione di SQL Server.

Gestione dei metadati nell'istanza del server aggiornata

Quando si collega un database a un'altra istanza del server, per garantire un sistema consistente a utenti e applicazioni, potrebbe essere necessario ricreare tutti i metadati del database o parte di essi, tra cui account di accesso, processi e autorizzazioni, nell'altra istanza del server. Per ulteriori informazioni, vedere Gestione dei metadati quando si rende disponibile un database in un'altra istanza del server.

Esempi

Nell'esempio seguente viene aggiornato il database pubs di SQL Server 2000 a un database di SQL Server 2005 tramite l'utilizzo delle istruzioni Transact-SQL per lo scollegamento e il collegamento del database.

  1. Connettere SQL Server 2000 Query Analyzer a un'istanza del server a cui è collegato il database pubs e quindi scollegare il database utilizzando la stored procedure sp_detach_db.

    USE master;
    GO
    EXEC sp_detach_db @dbname = N'pubs';
    GO
    
  2. Ai fini di questo esempio, è necessario copiare, utilizzando la procedura desiderata, i file di pubs (pubs.mdf e pubs_log.ldf) da C:\Programmi\Microsoft SQL Server\MSSQL\Data\ (il percorso predefinito di pubs in SQL Server 2000) in C:\Programmi\Microsoft SQL Server\MSSQL.1\MSSQL\Data\ (la directory dei dati di SQL Server 2005).

    ms189625.note(it-it,SQL.90).gifImportante:
    Nel caso di un database di produzione, memorizzare su dischi separati il database e il log delle transazioni.

    [!NOTA] Copiare i file in un disco su un computer remoto in rete utilizzando il nome UNC (Universal Naming Convention) della posizione remota. Il formato di un nome UNC è \Servername</STRONG>Sharename</STRONG>Path</STRONG>Filename. Come per la scrittura di file nel disco rigido locale, è necessario che l'account utente utilizzato da SQL Server disponga delle autorizzazioni necessarie per la lettura o la scrittura in un file nel disco remoto.

  3. Collegare il database pubs copiato e, facoltativamente, i file di log a un'istanza di SQL Server 2005 (in questo esempio viene utilizzato lo stesso nome di database). In SQL Server Management Studio, aprire l'editor di query e connettersi all'istanza del server a cui si desidera collegare il database utilizzando una nuova query.

    [!NOTA] Per ulteriori informazioni, vedere Query Transact-SQL di SQL Server Management Studio.

    Eseguire l'istruzione CREATE DATABASE seguente:

    USE master;
    GO
    CREATE DATABASE pubs ON PRIMARY 
       (FILENAME = 
          'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\pubs.mdf')
       LOG ON (FILENAME = 
          'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\pubs_log.ldf')
       FOR ATTACH;
    GO
    

    [!NOTA] In SQL Server Management Studio un database appena collegato non è immediatamente visibile in Esplora oggetti. Per visualizzarlo, fare clic nella finestra di Esplora oggetti e quindi scegliere Visualizza > Aggiorna. Quando si espande il nodo Database, il database appena collegato viene visualizzato nell'elenco dei database.

  4. Ricollegare facoltativamente il database pubs originale all'istanza di SQL Server 2000 utilizzando la stored procedure sp_attach_db. A tale scopo, immettere il codice seguente in Query Analyzer:

    USE master;
    Go
    EXEC sp_attach_db @dbname = N'pubs', 
       @filename1 = 
          N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf', 
       @filename2 = 
          N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf';
    GO
    

Vedere anche

Attività

Procedura: Collegamento di un database (SQL Server Management Studio)
Procedura: Aggiornamento a SQL Server 2005 con Copia guidata database

Concetti

Scollegamento e collegamento di database
Protezione dei dati e dei file di log

Altre risorse

CREATE DATABASE (Transact-SQL)
Utilizzo di Preparazione aggiornamento per preparare gli aggiornamenti

Guida in linea e informazioni

Assistenza su SQL Server 2005