Sdílet prostřednictvím


Aktualizace databáze pomocí odpojení a připojení (Transact-SQL)

platí pro:SQL Server

Toto téma popisuje, jak používat operace odpojení a připojení k upgradu databáze na SQL Serveru. Po připojení k SQL Serveru je databáze dostupná okamžitě a automaticky se upgraduje. Tím zabráníte použití databáze se starší verzí databázového stroje. Upgrade metadat však nemá vliv na úroveň kompatibility databáze nastavení databáze. Další informace o úrovni kompatibility databáze po upgradu najdete dále v tomto tématu v části .

V tomto tématu

Než začnete

Omezení a restrikce

  • Systémové databáze nelze připojit.

  • Nastavení možnosti řetězení vlastnictví mezi databázemi na 0 zakáže připojení a odpojení řetězení vlastnictví mezi databázemi pro databázi. Informace o povolení řetězení najdete v tématu řetězení vlastnictví mezi databázemi, možnost konfigurace serveru.

  • Při připojování replikované databáze, která byla zkopírována místo odpojení:

    • Pokud databázi připojíte k upgradované verzi stejné instance serveru, musíte po dokončení operace připojení provést sp_vupgrade_replication pro upgrade replikace. Pro více informací viz sp_vupgrade_replication (Transact-SQL).

    • 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. Podrobnosti viz sp_removedbreplication (Transact-SQL).

Doporučení

Doporučujeme nepřiložit nebo obnovit 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.

Aktualizace databáze pomocí odpojení a připojení

  1. Odpojte databázi. Další informace naleznete v tématu Odpojit databázi.

  2. Volitelně můžete přesunout odpojený databázový soubor nebo soubory a soubor protokolu nebo soubory.

    Soubory protokolu byste měli přesunout společně s datovými soubory, i když máte v úmyslu vytvořit nové soubory protokolu. V některých případech opětovné připojení databáze vyžaduje jeho existující soubory protokolu. Proto vždy uchovávejte všechny odpojené soubory protokolu, dokud není databáze úspěšně připojena bez nich.

    Poznámka

    Pokud se pokusíte připojit databázi bez zadání souboru protokolu, operace připojení vyhledá soubor protokolu v původním umístění. Pokud původní kopie protokolu v daném umístění stále existuje, je tato kopie připojena. Pokud se chcete vyhnout použití původního souboru protokolu, zadejte cestu nového souboru protokolu nebo odeberte původní kopii souboru protokolu (po zkopírování do nového umístění).

  3. Připojte zkopírované soubory k instanci SQL Serveru. Další informace najdete v tématu Připojení databáze.

Příklad

Následující příklad upgraduje kopii databáze ze starší verze SQL Serveru. Příkazy Transact-SQL se spouští v okně Editoru dotazů, které je připojené k instanci serveru, ke které je připojena.

  1. Odpojte databázi spuštěním následujících příkazů Transact-SQL:

    USE master;  
    GO  
    EXEC sp_detach_db @dbname = N'MyDatabase';  
    GO  
    
  2. Pomocí metody podle vašeho výběru zkopírujte data a soubory protokolu do nového umístění.

    Důležitý

    Pro produkční databázi nejlépe umístěte databázi a transakční protokol na samostatné disky. Tyto jednotky mají různé požadavky na vstupně-výstupní operace a růst souborů a považuje se za osvědčený postup jejich oddělení.

    Pokud chcete kopírovat soubory přes síť na disk ve vzdáleném počítači, použijte název UNC (Universal Nameming Convention) vzdáleného umístění. Název UNC má tvar \\Servername\Sharename\Path\Filename. Stejně jako při zápisu souborů na místní pevný disk musí být udělena příslušná oprávnění potřebná ke čtení nebo zápisu do souboru na vzdáleném disku pro uživatelský účet používaný instancí SQL Serveru.

  3. Připojte přesunutou databázi a volitelně i její protokol spuštěním následujícího příkazu Transact-SQL:

    USE master;  
    GO  
    CREATE DATABASE MyDatabase   
        ON (FILENAME = 'C:\MySQLServer\MyDatabase.mdf'),  
        (FILENAME = 'C:\MySQLServer\Database.ldf')  
        FOR ATTACH;  
    GO  
    

    V aplikaci SQL Server Management Studio není nově připojená databáze okamžitě viditelná v Průzkumníku objektů. Chcete-li zobrazit databázi, klepněte v Průzkumníku objektů na tlačítko Zobrazení, a potom Aktualizovat. Po rozbalení uzlu Databáze v Průzkumníku objektů se nově připojená databáze zobrazí v seznamu databází.

Následné kroky: Po aktualizaci databáze SQL Serveru

Pokud databáze obsahuje fulltextové indexy, proces upgradu buď importuje, resetuje nebo znovu sestaví v závislosti na nastavení vlastnosti serveru upgrade_option. Pokud je možnost upgradu nastavená na import (upgrade_option = 2) nebo znovu sestavit (upgrade_option = 0), nebudou během upgradu k dispozici fulltextové indexy. V závislosti na množství indexovaných dat může import trvat několik hodin a opětovné sestavení může trvat až desetkrát déle. Všimněte si také, že pokud je možnost upgradu nastavena na import, přidružené fulltextové indexy se znovu sestaví, pokud není k dispozici fulltextový katalog. Chcete-li změnit nastavení vlastnosti serveru upgrade_option, použijte sp_fulltext_service.

Úroveň kompatibility databáze po upgradu

Po upgradu zůstane úroveň kompatibility databáze na úrovni kompatibility před upgradem, pokud předchozí úroveň kompatibility není v nové verzi podporovaná. V takovém případě je upgradovaná úroveň kompatibility databáze nastavená na nejnižší podporovanou úroveň kompatibility.

Pokud například připojíte databázi s úrovní kompatibility 90 před připojením k instanci SQL Serveru 2019 (15.x), po upgradu je úroveň kompatibility nastavená na 100, což je nejnižší podporovaná úroveň kompatibility v SQL Serveru 2019 (15.x). Další informace naleznete v tématu ALTER DATABASE Úroveň kompatibility (Transact-SQL).

Správa metadat v upgradované instanci serveru

Když připojíte databázi k jiné instanci serveru, abyste uživatelům a aplikacím poskytli konzistentní prostředí, budete možná muset znovu vytvořit některá nebo všechna metadata pro databázi, jako jsou přihlášení, úlohy a oprávnění, na druhé instanci serveru. Další informace naleznete v tématu Správa metadat při zpřístupnění databáze v jiné instanci serveru (SQL Server).

Změny hlavního klíče služby a šifrování hlavního klíče databáze z 3DES na AES

SQL Server 2012 (11.x) a vyšší verze používají šifrovací algoritmus AES k ochraně hlavního klíče služby (SMK) a hlavního klíče databáze (DMK). AES je novější šifrovací algoritmus než 3DES používaný ve starších verzích. Při prvním připojení nebo obnovení databáze k nové instanci SQL Serveru se kopie hlavního klíče databáze (zašifrovaná hlavním klíčem služby) ještě na serveru neuloží. K dešifrování hlavního klíče databáze (DMK) musíte použít příkaz OPEN MASTER KEY. Po dešifrování dmK máte možnost povolit automatické dešifrování v budoucnu pomocí příkazu ALTER MASTER KEY REGENERATE pro zřízení serveru pomocí kopie DMK zašifrované pomocí hlavního klíče služby (SMK). Při upgradu databáze ze starší verze by se sada DMK měla znovu vygenerovat, aby používala novější algoritmus AES. Další informace o regeneraci DMK naleznete v tématu ALTER MASTER KEY (Transact-SQL). 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íčů.