Sdílet prostřednictvím


sp_attach_db (Transact-SQL)

platí pro:SQL Server

Připojí databázi k serveru.

Důležité

Tato funkce bude odebrána v budoucí verzi SQL Serveru. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají. Doporučujeme vám místo toho využít CREATE DATABASE <database_name> FOR ATTACH . Další informace naleznete v tématu CREATE DATABASE. Pro obnovení více logovacích souborů, když jeden nebo více mají nové umístění, použijte CREATE DATABASE <database_name> FOR ATTACH_REBUILD_LOG.

Nepřipojujte ani neobnovujte databáze z neznámých nebo nedůvěryhodných zdrojů. Takové databáze můžou obsahovat škodlivý kód, který by mohl spouštět nezamýšlené Transact-SQL kód nebo způsobit chyby úpravou schématu nebo fyzické struktury databáze. Před použitím databáze z neznámého nebo nedůvěryhodného zdroje spusťte DBCC CHECKDB v databázi na neprodukčním serveru a také zkontrolujte kód, jako jsou uložené procedury nebo jiný uživatelem definovaný kód v databázi.

Syntaxe

sp_attach_db
    [ @dbname = ] N'dbname'
    , [ { @filename1 ... @filename16 } = ] { N'*filename1*' ... N'*filename16*' }
[ ; ]

Arguments

[ @dbname = ] N'dbname'

Název databáze, která má být připojena k serveru. @dbname je sysname, bez výchozího nastavení.

[ { ... @filename1@filename16 } = ] { N'filename1' ... N'filename16' }

Fyzický název, včetně cesty, databázového souboru. Tento parametr je nvarchar(260), s výchozím hodnotou NULL. Můžete zadat až 16 názvů souborů. Názvy parametrů začínají na @filename1 a postupně se zvyšují na @filename16. Seznam jmen souborů musí obsahovat alespoň primární soubor (.mdf). Primární soubor obsahuje systémové tabulky, které ukazují na jiné soubory v databázi. Seznam musí také obsahovat soubory, které byly přesunuty po odpojení databáze.

Tento parametr se mapuje na FILENAME parametr tvrzení.CREATE DATABASE Další informace naleznete v tématu CREATE DATABASE.

Poznámka:

Když připojíte databázi SQL Server 2005 (9.x) obsahující plnotextové katalogové soubory k novší verzi SQL Serveru, katalogové soubory jsou připojeny z jejich předchozího umístění spolu s ostatními databázovými soubory, stejně jako v SQL Server 2005 (9.x). Pro více informací viz Upgrade Full-Text Search.

Hodnoty návratového kódu

0 (úspěch) nebo 1 (selhání).

Sada výsledků

Žádné.

Poznámky

Uložená procedura sp_attach_db by měla být vykonávána pouze na databázích, které byly dříve odděleny od databázového serveru pomocí explicitní sp_detach_db operace, nebo na zkopírovaných databázích. Pokud musíte zadat více než 16 souborů, použijte CREATE DATABASE <database_name> FOR ATTACH nebo CREATE DATABASE <database_name> FOR_ATTACH_REBUILD_LOG. Další informace naleznete v tématu CREATE DATABASE.

Každý nespecifikovaný soubor se předpokládá, že je na svém posledním známém místě. Pro použití souboru na jiném místě musíte zadat nové umístění.

V dřívějších verzích nelze připojit databázi vytvořenou novější verzí SQL Serveru.

Poznámka:

Snímek databáze nelze oddělit ani připojit.

Když připojujete replikovanou databázi, která byla zkopírována místo oddělení, zvažte následující podmínky:

  • Pokud připojíte databázi ke stejné instanci a verzi serveru jako původní databázi, nejsou potřeba další kroky.

  • Pokud databázi připojíte ke stejné instanci serveru, ale s upgradovanou verzí, musíte po dokončení operace připojení provést sp_vupgrade_replication upgradovat replikaci.

  • Pokud databázi připojíte k jiné instanci serveru bez ohledu na verzi, musíte po dokončení operace připojení provést sp_removedbreplication odebrat replikaci.

Když je databáze poprvé připojena nebo obnovena do nové instance SQL Serveru, kopie hlavního klíče databáze (DMK) – zašifrovaná hlavním klíčem služby (SMK) – ještě není uložena na serveru. Musíte použít OPEN MASTER KEY příkaz k dešifrování DMK. Jakmile je DMK dešifrován, máte možnost v budoucnu povolit automatické dešifrování tím, že příkazem ALTER MASTER KEY REGENERATE poskytnete serveru kopii DMK zašifrovanou SMK. Když je databáze aktualizována z dřívější verze, DMK by měla být znovu generována pro použití novějšího algoritmu AES. Další informace o opětovném vygenerování DMK naleznete v tématu ALTER MASTER KEY. Doba potřebná k opětovnému vygenerování klíče DMK pro upgrade na AES závisí na počtu objektů chráněných dmK. Opětovné vygenerování klíče DMK pro upgrade na AES je nezbytné pouze jednou a nemá žádný vliv na budoucí regeneraci v rámci strategie obměny klíčů.

Povolení

Pro informace o tom, jak jsou oprávnění spracovávána při připojení databáze, viz VYTVOŘIT DATABÁZI.

Examples

Následující příklad připojuje soubory z AdventureWorks2025 aktuálního serveru.

EXECUTE sp_attach_db
    @dbname = N'AdventureWorks2022',
    @filename1 = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Data\AdventureWorks2022_Data.mdf',
    @filename2 = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Data\AdventureWorks2022_log.ldf';