sp_attach_db (Transact-SQL)

Fügt eine Datenbank an einen Server an.

Wichtiger HinweisWichtig

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

HinweisHinweis

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.

SicherheitshinweisSicherheitshinweis

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.

Themenlink (Symbol) Transact-SQL-Syntaxkonventionen

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. Der Standardwert ist NULL.

  • [ @filename1= ] 'filename_n'
    Der physische Name der Datenbankdatei, einschließlich des Pfads. filename_n ist vom Datentyp nvarchar(260). Der Standardwert ist 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.

    HinweisHinweis

    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 2012-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 von SQL Server 2005.

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.

HinweisHinweis

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.

Nur SQL Server 2005 und spätere Datenbanken können an SQL Server 2012 angefügt werden. Wenn der Kompatibilitätsgrad einer Datenbank kleiner als 90 ist, wird der Kompatibilitätsgrad in Ebene 90 geändert, wenn die Datenbank an SQL Server 2012 angefügt wird.

Wird eine Datenbank zum ersten Mal an eine neue Instanz von SQL Server angefügt oder wiederhergestellt, ist noch keine Kopie des Datenbank-Hauptschlüssels (verschlüsselt vom Diensthauptschlüssel) auf dem Server gespeichert. Der Datenbank-Hauptschlüssel (Database Master Key, DMK) muss mithilfe der OPEN MASTER KEY-Anweisung entschlüsselt werden. Nachdem der Datenbank-Hauptschlüssel entschlüsselt wurde, können Sie für die Zukunft die automatische Entschlüsselung aktivieren, indem Sie die ALTER MASTER KEY REGENERATE-Anweisung verwenden. Auf diese Weise können Sie eine Kopie des mit dem Diensthauptschlüssel (Service Master Key, SMK) verschlüsselten Datenbank-Hauptschlüssels für den Server bereitstellen. Wenn eine Datenbank von einer früheren Version aktualisiert wurde, sollte der DMK neu generiert werden, damit er den neueren AES-Algorithmus verwendet. Weitere Informationen zum Neugenerieren des DMK finden Sie unter ALTER MASTER KEY (Transact-SQL). Die zum Neugenerieren des DMK zum Upgrade auf AES erforderliche Zeit hängt von der Anzahl der Objekte ab, die durch den DMK geschützt werden. Der DMK muss nur einmal auf AES aktualisiert und neu generiert werden. Dies hat keine Auswirkungen auf zukünftige Neugenerierungen im Rahmen einer Schlüsselrotationsstrategie.

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 AdventureWorks2012 an den aktuellen Server angefügt.

EXEC sp_attach_db @dbname = N'AdventureWorks2012', 
    @filename1 = 
N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\AdventureWorks2012_Data.mdf', 
    @filename2 = 
N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\AdventureWorks2012_log.ldf';

Siehe auch

Verweis

sp_detach_db (Transact-SQL)

sp_helpfile (Transact-SQL)

sp_removedbreplication (Transact-SQL)

Gespeicherte Systemprozeduren (Transact-SQL)

Konzepte

Anfügen und Trennen von Datenbanken (SQL Server)