Některé běžné otázky týkající se připojování databází na serveru SQL:
- Co to znamená připojit nebo odpojit databázi?
- Jak odpojím databázi?
- Jak připojím databázi?
- Co to znamená připojit a znovu vytvořit protokol?
- Jak to mohu udělat v SQL Server Express?
- Kdy mohu zvážit odpojení a připojení?
- Existují nějaká rizika nebo varování?
- A co připojení mezi verzemi a vydáními serveru SQL? (Standard pro Enterprise? 2000 až 2008? 2012 až 2008?)
Začneme s odpojením Když odpojíte databázi na serveru SQL, převedete databázi do režimu offline a odeberete ji z instance serveru SQL, ze které odděluješ to. Databázová data a soubory protokolu zůstávají v kontaktu a jsou ponechány v konzistentním stavu, takže můžete databázi připojit později nebo k jiné instanci serveru SQL. Připojit spojí data a soubory protokolu z databáze, která byla správně odpojena (nebo která byla zkopírována z čistě vypnuté instance serveru SQL) do instance serveru SQL a přináší databázi online.
To lze provést v T-SQL nebo z rozhraní SQL Server Management Studio GUI.
V GUI klikněte pravým tlačítkem na databázi, kterou chcete odpojit, vyberte All Tasks
a klikněte na Detach
. Odtud se zobrazí dialog pro odpojení. Můžete se rozhodnout, že zrušíte připojení, abyste násilně odpojili všechna aktivní připojení a vrátili práci, která byla uprostřed provádění. Můžete také zvolit aktualizaci statistik před odpojením.
V T-SQL:
-- You don't want to be in the database you are trying to detach
USE Master
GO
-- Optional step to drop all active connections and roll back their work
ALTER DATABASE DatabaseName
SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
-- Perform the detach
EXEC sp_detach_db 'DatabaseName'
GO
Pro systémovou proceduru uloženou sp_detach_db existují dva parametry, které můžete volitelně předat:
@skipchecks
- přijatelný vstup je 'True'
nebo 'False'
if 'True'
, SQL Server aktualizuje statistiky před odpojením. Pokud 'False'
to nebude. Pokud zde nezadáte nic, budou statistiky aktualizovány v SQL Serveru 2005 nebo novějším. @keepfulltextindexfile
- Výchozí nastavení je 'True'
- pokud je nastavena na true, metadata fulltextového indexu nebudou během odpojení zrušena.Chcete-li vidět mnohem více o odloučení a některých dalších podrobnostech o rizicích, které zvýrazňuji níže, Knihy Online článek pro sp_detach_db
je dobré místo, kde začít.
Můžete to také provést v T-SQL nebo z GUI SQL Server Management Studio.
( POZNÁMKA: Pokud máte data a soubory protokolu z databáze, která nebyla správně odpojena, váš příloha nemusí fungovat. Když dojde k odpojení, databáze je offline a soubory protokolu a datové soubory jsou uvedeny do konzistentního stavu. K tomu také dochází, když je služba čistě vypnuta. )
V GUI klikněte pravým tlačítkem na složku nejvyšší úrovně Databases
pro vaši instanci a vyberte Attach
. V dalším dialogu byste pak vybrali primární datový soubor (.MDF) databáze, kterou chcete připojit, a zajistili, aby byly vybrány další soubory a jejich vhodná umístění, a klikněte na OK, připojte databázi.
V T-SQL je nejlepším způsobem, jak toho dosáhnout v SQL Server 2005 a vpřed, prostřednictvím CREATE DATABASE
příkaz. Toto je metoda, která je podporována i mimo SQL Server 2012. Pokud chcete vidět, jak používat sp_attach_db
, můžete to vidět v článcích o knihách online pro [sp_attach_db][3]
nebo [sp_attach_single_file_db][4]
Pokud máte k dispozici svůj soubor protokolu a datové soubory a jsou konzistentní, jedná se o přístup T-SQL:
- Připojit pomocí Vytvořit databázi a klauzuli FOR ATTACH
CREATE DATABASE DatabaseName
ON (FILENAME = 'FilePath\FileName.mdf'), -- Main Data File .mdf
(FILENAME = 'FilePath\LogFileName.ldf'), -- Log file .ldf
(FILENAME = 'FilePath\SecondaryDataFile.ndf) -- Optional - any secondary data files
FOR ATTACH
GO
Další informace o příkazu Create Database najdete také v knihách online.
Je to vlastně to samé. Pokud používáte SQL Server Management Studio Express, můžete použít dialog odpojit/připojit ve výše popsaném GUI nebo kroky T-SQL prostřednictvím SSMS Express popsaného výše. Žádný rozdíl tam není.
Pokud nemáte SSMS Express, můžete si jej stáhnout ( zde je verze SQL Server 2012 Express).
Z toho můžete vstoupit do relace SQLCMD
a použít stejné konstrukty T-SQL popsané výše.
Nejprve slovo o tom, k jakému účelu není odpojení a připojení použito: Zálohování a zotavení Odpojení a připojení není způsob, jak zálohovat databázi pro rutinu účely zotavení. Neexistují žádné zálohy protokolu transakcí tímto způsobem, staví vaši databázi do stavu, ve kterém mohou být databázové soubory omylem smazány a pro tento účel není vůbec dobrý.
To znamená, že odpojení a připojení jsou dobré pro několik případů použití (ne vyčerpávající, bez obav upravte a přidejte nebo vytvořte novou odpověď s více):
Knihy online jsou opět dobrým zdrojem zde , ale budu vyžadovat určité konkrétní úvahy, které je třeba mít na paměti při odpojování nebo připojování databáze -
Odpojit
Attach - Stejně jako byste neměli spouštět skripty z internetu ani přijímat balíčky od cizinců na letišti, neměli byste připojovat databázi, kterou jste získali od někdo jiný bez nějakých kroků k ověření. Tato databáze může obsahovat kód uvnitř spouštěčů, uložených procedur atd., Které by mohly ohrozit vaše prostředí. Měli byste zkontrolovat databázi, kterou chcete připojit, v bezpečném a firewallovaném prostředí, nikoli ve vašem výrobním systému.
Nejedná se o jiná pravidla než o obnovení databází mezi verzemi. Obecně lze obnovit až na další verzi pro 3 verze (například bude fungovat SQL Server 2008 až SQL Server 2012. SQL Server 2000 na SQL Server 2012 nebude). Přes zálohování/obnovení nebo odpojení/připojení se nemůžete vrátit zpět - museli byste skriptovat objekty a skriptovat přílohy a provádět to ručně nebo pomocí nástroje, který to dělá. U vydání se můžete obecně pohybovat mezi hlavními SKU serveru SQL - například můžete přesunout databázi ze Standardu do Enterprise bez další práce. Pokud používáte funkce Enterprise (Řekněte, komprese nebo rozdělení), musíte je před provedením přesunu deaktivovat. Můžete získat představu o funkcích, které byste měli zvážit deaktivovat hledáním zde .