Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Odpojí databázi, která není aktuálně používána, ze serverové instance a volitelně běží UPDATE STATISTICS na všech tabulkách před odpojením.
Aby byla replikovaná databáze odpojena, musí být nepublikovaná. Pro více informací viz sekce Poznámky později v tomto článku.
Syntaxe
sp_detach_db
[ [ @dbname = ] N'dbname' ]
[ , [ @skipchecks = ] N'skipchecks' ]
[ , [ @keepfulltextindexfile = ] N'keepfulltextindexfile' ]
[ ; ]
Arguments
[ @dbname = ] N'dbname'
Název databáze, která má být oddělena.
@dbname je sysname , s výchozím NULL.
[ @skipchecks = ] N'skipchecks'
Specifikuje, zda má přeskočit nebo spustit UPDATE STATISTICS.
@skipchecks je nvarchar(10), s výchozím hodnotou NULL. Pro přeskočení UPDATE STATISTICSuveďme true. Pro explicitní spuštění UPDATE STATISTICS, specifikujeme false.
Ve výchozím nastavení se provádí aktualizace UPDATE STATISTICS informací o datech v tabulkách a indexech. Performance je UPDATE STATISTICS užitečný pro databáze, které mají být přesunuty na média pouze pro čtení.
[ @keepfulltextindexfile = ] N'keepfulltextindexfile'
Specifikuje, že fulltextový indexový soubor spojený s databází, která je odpojena, není během operace odpojování databáze vypuštěn.
@keepfulltextindexfile je nvarchar(10), s výchozím hodnotou true.
- Pokud @keepfulltextindexfile ,
falsevšechny plnotextové indexové soubory spojené s databází a metadata plného textového indexu jsou vyřazeny, pokud databáze není pouze pro čtení. - Pokud
NULLnebotrue, jsou uchovávána metadata související s plným textem.
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í.
Hodnoty návratového kódu
0 (úspěch) nebo 1 (selhání).
Sada výsledků
Žádné.
Poznámky
Když je databáze odpojena, všechna její metadata jsou odstraněna. Pokud byla databáze výchozí databází jakýchkoli přihlašovacích účtů, stává se jejich výchozí databází. master
Poznámka:
Pro informace o tom, jak zobrazit výchozí databázi všech přihlašovacích účtů, viz sp_helplogins. Pokud máte požadovaná oprávnění, můžete pomocí ALTER LOGIN přiřadit novou výchozí databázi k přihlášení.
Omezení
Databázi nelze odpojit, pokud platí některá z následujících skutečností:
Databáze je v současnosti v provozu. Pro více informací viz Získejte exkluzivní přístup.
Pokud je replikována, databáze je publikována.
Než můžete databázi odpojit, musíte deaktivovat publikování spuštěním sp_replicationdboption.
Pokud nemůžete použít
sp_replicationdboption, můžete replikaci odstranit spuštěním sp_removedbreplication.Na databázi existuje snímek databáze.
Než můžete databázi odpojit, musíte odstranit všechny její snímky. Pro více informací viz Drop a Database Snapshot.
Snímek databáze nelze oddělit ani připojit.
Databáze je zrcadlená.
Databáze nemůže být odpojena, dokud není zrcadlení databáze ukončeno. Pro více informací viz Odstranění zrcadlení databáze (SQL Server).
Databáze je podezřelá.
Musíte dát databázi podezřelých do nouzového režimu, než ji můžete odpojit. Pro více informací o tom, jak dát databázi do nouzového režimu, viz ALTER DATABASE.
Databáze je systémová databáze.
Získejte exkluzivní přístup
Oddělení databáze vyžaduje exkluzivní přístup k databázi. Pokud je databáze, kterou chcete odpojit, v provozu, než ji můžete odpojit, nastavte databázi do SINGLE_USER režimu pro exkluzivní přístup.
Než nastavíte databázi na SINGLE_USER, ověřte, že je volba AUTO_UPDATE_STATISTICS_ASYNC nastavena na OFF. Když je tato volba nastavena na ON, vlákno na pozadí, které se používá k aktualizaci statistik, naváže spojení s databází a v režimu jednoho uživatele nelze databázi přistoupit. Další informace naleznete v tématu Nastavení databáze na režim jednoho uživatele.
Například následující tvrzení získává exkluzivní přístup k databázi AdventureWorks2025 poté, ALTER DATABASE co se všichni současní uživatelé odpojí od databáze.
USE master;
ALTER DATABASE AdventureWorks2022
SET SINGLE_USER;
GO
Pro okamžité nebo během stanoveného počtu sekund můžete tuto možnost také vynutit ROLLBACK současné uživatele z databáze.
ALTER DATABASE <database_name>
SET SINGLE_USER
WITH ROLLBACK <rollback_option>;
Další informace naleznete v části ALTER DATABASE.
Znovu připojit databázi
Odpojené soubory zůstávají a lze je znovu připojit pomocí ( CREATE DATABASE s FOR ATTACH možností nebo FOR ATTACH_REBUILD_LOG ). Soubory lze přesunout na jiný server a připojit tam.
Povolení
Vyžaduje členství v roli správce systému jako pevného serveru nebo členství v db_owner roli databáze.
Examples
Ukázky kódu v tomto článku používají ukázkovou databázi AdventureWorks2025 nebo AdventureWorksDW2025, kterou si můžete stáhnout z domovské stránky Microsoft SQL Serveru pro ukázky a komunitní projekty .
Následující příklad odděluje databázi AdventureWorks2025 s @skipchecks nastavenou na true.
EXECUTE sp_detach_db 'AdventureWorks2022', 'true';
Následující příklad odděluje databázi AdventureWorks2025 a uchovává soubory s plným textem indexu a metadata celého textu. Tento příkaz spustí UPDATE STATISTICS, což je výchozí chování.
EXECUTE sp_detach_db
@dbname = 'AdventureWorks2022',
@keepfulltextindexfile = 'true';