sp_attach_db (Transact-SQL)
Fügt eine Datenbank an einen Server an.
Wichtig |
---|
Diese Funktion wird in zukünftigen Versionen von Microsoft SQL Server nicht mehr bereitgestellt. Verwenden Sie diese Funktion beim Entwickeln neuer Anwendungen nicht, und planen Sie das Ändern von Anwendungen, in denen es zurzeit verwendet wird. Es empfiehlt sich, stattdessen CREATE DATABASE database_name FOR ATTACH zu verwenden. Weitere Informationen finden Sie unter CREATE DATABASE (Transact-SQL). |
Hinweis |
---|
Verwenden Sie CREATE DATABASE database_name FOR ATTACH_REBUILD_LOG, um mehrere Protokolldateien neu zu erstellen, wenn eine oder mehrere Dateien einen neuen Speicherort aufweisen. |
Sicherheitshinweis |
---|
Das Anfügen oder Wiederherstellen von Datenbanken aus unbekannten oder nicht vertrauenswürdigen Quellen wird nicht empfohlen. Solche Datenbanken können bösartigen Code enthalten, der möglicherweise unbeabsichtigten Transact-SQL-Code ausführt oder Fehler verursacht, indem er das Schema oder die physische Datenbankstruktur ändert. Bevor Sie eine Datenbank aus einer unbekannten oder nicht vertrauenswürdigen Quelle verwenden, führen Sie DBCC CHECKDB für die Datenbank auf einem Nichtproduktionsserver aus. Untersuchen Sie außerdem den Code, z. B. gespeicherte Prozeduren oder anderen benutzerdefinierten Code, in der Datenbank. |
Syntax
sp_attach_db [ @dbname= ] 'dbname'
, [ @filename1= ] 'filename_n' [ ,...16 ]
Argumente
[ @dbname= ] **'**dbnam '
Der Name der Datenbank, die an den Server angefügt werden soll. Der Name muss eindeutig sein. dbname ist vom Datentyp sysname und hat den Standardwert NULL.[ @filename1= ] 'filename_n'
Der physische Name einer Datenbankdatei (einschließlich des Pfades). filename_n ist vom Datentyp nvarchar(260) und hat den Standardwert NULL. Sie können bis zu 16 Dateinamen angeben. Die Parameternamen beginnen mit @filename1 und werden bis @filename16 hochgezählt. Die Liste der Dateinamen muss mindestens die primäre Datei einschließen. Die primäre Datei enthält die Systemtabellen, die auf andere Dateien in der Datenbank zeigen. Die Liste muss außerdem alle Dateien enthalten, die nach dem Trennen der Datenbank verschoben wurden.Hinweis Dieses Argument entspricht dem FILENAME-Parameter der CREATE DATABASE-Anweisung. Weitere Informationen finden Sie unter CREATE DATABASE (Transact-SQL).
Wenn Sie eine SQL Server 2005-Datenbank mit Volltextkatalogdateien an eine SQL Server 2008 R2-Serverinstanz anfügen, werden die Katalogdateien von ihrem vorherigen Speicherort aus zusammen mit den anderen Datenbankdateien angefügt. Dies entspricht der Vorgehensweise für SQL Server 2005. Weitere Informationen finden Sie unter Aktualisieren der Volltextsuche.
Rückgabecodewerte
0 (Erfolg) oder 1 (Fehler)
Resultsets
Keine
Hinweise
Die gespeicherte Prozedur sp_attach_db sollte nur für Datenbanken ausgeführt werden, die zuvor mit einem expliziten sp_detach_db-Vorgang vom Datenbankserver getrennt wurden, oder für kopierte Datenbanken. Wenn Sie mehr als 16 Dateien angeben müssen, verwenden Sie CREATE DATABASE database_name FOR ATTACH oder CREATE DATABASE database_name FOR_ATTACH_REBUILD_LOG. Weitere Informationen finden Sie unter CREATE DATABASE (Transact-SQL).
Wird für eine Datei kein Pfad angegeben, wird davon ausgegangen, dass sie sich am zuletzt bekannten Speicherort befindet. Wenn Sie eine Datei an einem anderen Speicherort verwenden möchten, müssen Sie den neuen Speicherort angeben.
Eine Datenbank, die in einer neueren Version von SQL Server erstellt wurde, kann in früheren Versionen nicht angefügt werden.
Hinweis |
---|
Eine Datenbankmomentaufnahme kann nicht getrennt oder angefügt werden. |
Berücksichtigen Sie Folgendes, wenn Sie eine replizierte Datenbank anfügen, die kopiert statt getrennt wurde:
Wenn Sie die Datenbank an die gleiche Serverinstanz und -version wie die ursprüngliche Datenbank anfügen, sind keine weiteren Schritte erforderlich.
Wenn Sie die Datenbank an die gleiche Serverinstanz mit einer aktualisierten Version anfügen, müssen Sie sp_vupgrade_replication ausführen, um die Replikation zu aktualisieren, nachdem der Anfügevorgang abgeschlossen wurde.
Wenn Sie die Datenbank an eine andere Serverinstanz unabhängig von der Version anfügen, müssen Sie sp_removedbreplication ausführen, um die Replikation zu entfernen, nachdem der Anfügevorgang abgeschlossen wurde.
Bei der Quelldatenbank muss es sich mindestens um die Version 80 (SQL Server 2000) handeln, um sie an SQL Server 2008 R2, SQL Server 2008 anfügen zu können. SQL Server 2000- oder SQL Server 2005-Datenbanken mit einem Kompatibilitätsgrad kleiner 80 werden beim Anfügen auf den Kompatibilitätsgrad 80 gesetzt.
Berechtigungen
Informationen zur Handhabung von Berechtigungen, wenn eine Datenbank angefügt wird, finden Sie unter CREATE DATABASE (Transact-SQL).
Beispiele
Im folgenden Beispiel werden Dateien von AdventureWorks2008R2 an den aktuellen Server angefügt.
EXEC sp_attach_db @dbname = N'AdventureWorks2008R2',
@filename1 = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\AdventureWorks2008R2_Data.mdf',
@filename2 = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\AdventureWorks2008R2_log.ldf';