sp_attach_db (Transact-SQL)

Data aggiornamento: 12 dicembre 2006

Collega un database a un server.

ms179877.note(it-it,SQL.90).gifImportante:
Questa funzionalità verrà rimossa in una delle prossime versioni di Microsoft SQL Server. Evitare di utilizzare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. È invece consigliabile utilizzare CREATE DATABASE database_name FOR ATTACH. Per ulteriori informazioni, vedere CREATE DATABASE (Transact-SQL).

[!NOTA] Per generare nuovamente più file di log quando uno o più di essi si trovano in una nuova posizione, utilizzare CREATE DATABASE database_name FOR ATTACH_REBUILD_LOG.

ms179877.security(it-it,SQL.90).gifNota sulla protezione:
È consigliabile evitare di collegare o ripristinare database provenienti da origini sconosciute o non attendibili. Questi database potrebbero contenere malware che può eseguire codice Transact-SQL indesiderato o causare errori modificando lo schema o la struttura fisica di 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 inoltre il codice nel database, ad esempio stored procedure o altro codice definito dall'utente.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

sp_attach_db [ @dbname= ] 'dbname'
        , [ @filename1= ] 'filename_n' [ ,...16 ] 

Argomenti

  • [ @dbname= ] **'**dbnam '
    Nome del database da collegare al server. Deve essere un nome univoco. dbname è di tipo sysname e il valore predefinito è NULL.
  • [ @filename1= ] 'filename_n'
    Nome fisico, completo di percorso, di un file di database. filename_n è di tipo nvarchar(260) e il valore predefinito è NULL. È possibile specificare un massimo di 16 nomi di file. I nomi dei parametri sono numerati a partire da @filename1 e vengono incrementati fino a @filename16. L'elenco dei nomi di file deve includere almeno il file primario, il quale contiene le tabelle di sistema che fanno riferimento ad altri file del database. Tale elenco deve includere inoltre tutti i file spostati dopo lo scollegamento del database.

    [!NOTA] Questo argomento esegue il mapping al parametro FILENAME dell'istruzione CREATE DATABASE. Per ulteriori informazioni, vedere CREATE DATABASE (Transact-SQL).

    Nel Motore di database di SQL Server 2005 tutti i file full-text che fanno parte del database di cui si esegue il collegamento verranno collegati al database. Per indicare un nuovo percorso del catalogo full-text, è possibile specificare il file del catalogo immettendo un nome di directory senza un nome di file. Per ulteriori informazioni, vedere Collegamento e scollegamento di cataloghi full-text.

    [!NOTA] Non è possibile collegare un catalogo full-text alla directory principale.

Set di risultati

Nessuno

Osservazioni

La stored procedure sp_attach_db deve essere eseguita solo in database che sono stati precedentemente scollegati dal server di database tramite un'operazione sp_detach_db esplicita o in database copiati. Se è necessario specificare più di 16 file, utilizzare CREATE DATABASE database_name FOR ATTACH oppure CREATE DATABASE database_name FOR_ATTACH_REBUILD_LOG. Per ulteriori informazioni, vedere CREATE DATABASE (Transact-SQL).

Si presuppone che i file non specificati siano memorizzati nell'ultima posizione conosciuta. Per utilizzare un file in una posizione diversa, è necessario specificare la nuova posizione.

Un database creato mediante una versione più recente di SQL Server non può essere collegato alle versioni precedenti.

[!NOTA] Non è possibile scollegare o collegare uno snapshot del database.

Quando si collega un database replicato copiato anziché scollegato, è necessario considerare quanto segue:

  • Se si collega il database alla stessa istanza del server e alla stessa versione del database originale, non sono necessari passaggi aggiuntivi.
  • Se si collega il database alla stessa istanza del server ma si utilizza una versione aggiornata, dopo il completamento dell'operazione di collegamento è necessario eseguire sp_vupgrade_replication per aggiornare la replica.
  • Se si collega il database a un'istanza del server diversa, indipendentemente dalla versione, dopo il completamento dell'operazione di collegamento è necessario eseguire sp_removedbreplication per rimuovere la replica.

Autorizzazioni

Per informazioni sulla modalità di gestione delle autorizzazioni quando viene collegato un database, vedere CREATE DATABASE (Transact-SQL).

Valori restituiti

0 (esito positivo) o 1 (esito negativo)

Esempi

Nell'esempio seguente vengono collegati file da AdventureWorks al server corrente.

EXEC sp_attach_db @dbname = N'AdventureWorks', 
    @filename1 = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_Data.mdf', 
    @filename2 = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_log.ldf';

Vedere anche

Riferimento

sp_detach_db (Transact-SQL)
sp_helpfile (Transact-SQL)
sp_removedbreplication (Transact-SQL)
Stored procedure di sistema (Transact-SQL)

Altre risorse

Scollegamento e collegamento di database
Protezione dei dati e dei file di log
Collegamento e scollegamento di cataloghi full-text

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

12 dicembre 2006

Nuovo contenuto:
  • Aggiornamento della sezione "Osservazioni" per spiegare che un database creato mediante una versione più recente di SQL Server non può essere collegato alle versioni precedenti.

5 dicembre 2005

Nuovo contenuto:
  • Aggiunta della nota sulla protezione.