Sdílet prostřednictvím


Opětovné sestavení systémových databází

platí pro:SQL Server

Systémové databáze musí být znovu sestaveny, aby bylo možné opravit problémy s poškozením v databázi master, model, msdb nebo resource nebo k úpravě výchozí kolace na úrovni serveru. Tento článek obsahuje podrobné pokyny k opětovnému sestavení systémových databází na SQL Serveru.

Tento článek nesouvisí s opětovným sestavením indexů.

Omezení

Když se master, model, msdb a tempdb systémové databáze znovu vytvoří, databáze se zahodí a znovu vytvoří na jejich původním místě. Pokud je v příkazu rebuild zadána nová kolace, systémové databáze se vytvoří pomocí daného nastavení kolace. Všechny změny uživatelů těchto databází budou ztraceny. Můžete mít například uživatelem definované objekty v master databázi, naplánované úlohy v msdbdatabázi nebo změnit výchozí nastavení databáze v model databázi.

Požadavky

Před opětovným sestavením systémových databází proveďte následující úlohy, abyste měli jistotu, že systémové databáze můžete obnovit do aktuálního nastavení.

  1. Zaznamená všechny hodnoty konfigurace pro celý server.

    SELECT * FROM sys.configurations;
    
  2. Zaznamenejte všechny hotfixy použité na instanci systému SQL Server a aktuální kolaci. Po opětovném sestavení systémových databází je nutné tyto opravy hotfix znovu použít.

    SELECT
    SERVERPROPERTY('ProductVersion ') AS ProductVersion,
    SERVERPROPERTY('ProductLevel') AS ProductLevel,
    SERVERPROPERTY('ResourceVersion') AS ResourceVersion,
    SERVERPROPERTY('ResourceLastUpdateDateTime') AS ResourceLastUpdateDateTime,
    SERVERPROPERTY('Collation') AS Collation;
    
  3. Zaznamená aktuální umístění všech dat a souborů protokolu pro systémové databáze. Opětovné sestavení systémových databází nainstaluje všechny systémové databáze do původního umístění. Pokud jste přesunuli systémová data databáze nebo soubory protokolů do jiného umístění, musíte je znovu přesunout.

    SELECT name, physical_name AS current_file_location
    FROM sys.master_files
    WHERE database_id IN (DB_ID('master'), DB_ID('model'), DB_ID('msdb'), DB_ID('tempdb'));
    
  4. Vyhledejte aktuální zálohu databází master, model a msdb.

  5. Pokud je instance SQL Serveru nakonfigurovaná jako distributor replikace, vyhledejte aktuální zálohu distribution databáze.

  6. Ujistěte se, že máte odpovídající oprávnění k opětovnému sestavení systémových databází. Chcete-li provést tuto operaci, musíte být členem pevné role serveru správce systému . Další informace najdete v tématu Server-Level Role.

  7. Ověřte, že na místním serveru existují kopie souborů šablony dat a protokolů: master, model, msdb. Výchozí umístění souborů šablony je C:\Program Files\Microsoft SQL Server\MSSQL<xx>.MSSQLSERVER\MSSQL\Binn\Templates (kde <xx> je nainstalovaná verze). Tyto soubory se používají během procesu opětovného sestavení a musí být k dispozici, aby instalační program uspěl. Pokud chybí, spusťte funkci Opravy v instalačním programu nebo ručně zkopírujte soubory ze zdrojů instalačního média. Chcete-li vyhledat soubory na instalačním médiu, přejděte do příslušného adresáře platformy (x86 nebo x64) a přejděte na setup\sql_engine_core_inst_msi\Pfiles\SqlServr\MSSQL.X\MSSQL\Binn\Templates.

Opětovné sestavení systémových databází

Následující postup znovu sestaví systémové databáze master, model, msdb a tempdb. Nelze zadat systémové databáze, které se mají znovu vytvořit. U clusterovaných instancí musí být tento postup proveden na aktivním uzlu a prostředek SQL Serveru v odpovídající skupině aplikací clusteru musí být před provedením postupu přepnut do offline režimu.

Tento postup databázi resource neznovuvytvoří. Viz část Opětovné sestavení databáze systému prostředků dále v tomto článku.

Opětovné sestavení systémových databází pro instanci SQL Serveru

  1. Vložte instalační médium SYSTÉMU SQL Server na diskovou jednotku nebo z příkazového řádku změňte adresáře na umístění setup.exe souboru na místním serveru. Pro SQL Server 2022 (16.x) je výchozí umístění na serveru .C:\Program Files\Microsoft SQL Server\160\Setup Bootstrap\SQLServer2022

  2. V okně příkazového řádku zadejte následující příkaz. Hranaté závorky slouží k označení volitelných parametrů. Nezadávejte závorky. Při použití operačního systému Windows, který má povolené řízení uživatelských účtů (UAC), vyžaduje spuštění instalačního programu zvýšená oprávnění. Příkazový řádek musí být spuštěný jako správce.

    setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName /SQLSYSADMINACCOUNTS=accounts [ /SAPWD= StrongPassword ] [ /SQLCOLLATION=CollationName ]
    
    Název parametru Description
    /QUIET nebo /Q Určuje, že instalační program by se měl spustit bez uživatelského rozhraní.
    /ACTION=REBUILDDATABASE Určuje, že instalační program by měl znovu vytvořit systémové databáze.
    /INSTANCENAME=InstanceName Název instance SQL Serveru. Jako výchozí instanci zadejte MSSQLSERVER.
    /SQLSYSADMINACCOUNTS=accounts Určuje skupiny Systému Windows nebo jednotlivé účty, které se mají přidat do pevné role serveru správce systému . Při zadávání více účtů oddělte účty mezerou. Zadejte například BUILTIN\Administrators MyDomain\MyUser. Při zadávání účtu, který obsahuje mezeru v názvu účtu, uzavřete název účtu do uvozovek. Zadejte například NT AUTHORITY\SYSTEM.
    [ /SAPWD=StrongPassword ] Určuje heslo pro účet sa SQL Serveru. Tento parametr se vyžaduje, pokud instance používá režim smíšeného ověřování (SQL Server a ověřování systému Windows).

    Poznámka k zabezpečení: Účet sa je dobře známý účet SQL Serveru, na který často cílí uživatelé se zlými úmysly. Je důležité, abyste pro přihlášení sa použili silné heslo.

    Nezadávejte tento parametr pro režim ověřování systému Windows.
    [ /SQLCOLLATION=CollationName ] Určuje novou kolaci na úrovni serveru. Tento parametr je volitelný. Pokud není zadáno, použije se aktuální kolace serveru.

    Důležité: Změna kolace na úrovni serveru nemění kolaci existujících uživatelských databází. Všechny nově vytvořené uživatelské databáze budou ve výchozím nastavení používat novou kolaci.

    Další informace naleznete v tématu Nastavení nebo změna kolace serveru.
    [ /SQLTEMPDBFILECOUNT=NumberOfFiles ] Určuje počet datových tempdb souborů. Tuto hodnotu je možné zvýšit až o 8 jader nebo počet jader, podle toho, co je vyšší.

    Výchozí hodnota: 8 nebo počet jader, podle toho, co je nižší.
    [ /SQLTEMPDBFILESIZE=FileSizeInMB ] Určuje počáteční velikost každého tempdb datového souboru v MB. Instalační program umožňuje velikost až 1024 MB.

    Výchozí hodnota: 8
    [ /SQLTEMPDBFILEGROWTH=FileSizeInMB ] Určuje přírůstek velikosti každého datového souboru ve tempdb MB. Hodnota 0 označuje, že automatický růst je vypnutý a není povoleno žádné další místo. Instalační program umožňuje velikost až 1024 MB.

    Výchozí hodnota: 64
    [ /SQLTEMPDBLOGFILESIZE=FileSizeInMB ] Určuje počáteční velikost tempdb souboru protokolu v MB. Instalační program umožňuje velikost až 1024 MB.

    Výchozí hodnota: 8.

    Povolený rozsah: Min = 8, max = 1024.
    [ /SQLTEMPDBLOGFILEGROWTH=FileSizeInMB ] Určuje přírůstek růstu tempdb souboru protokolu v MB. Hodnota 0 označuje, že automatický růst je vypnutý a není povoleno žádné další místo. Instalační program umožňuje velikost až 1024 MB.

    Výchozí hodnota: 64

    Povolený rozsah: Min = 8, max = 1024.
    [ /SQLTEMPDBDIR=Adresáře ] Určuje adresáře pro tempdb datové soubory. Při zadávání více než jednoho adresáře oddělte adresáře mezerou. Pokud je zadáno více adresářů, tempdb datové soubory budou rozloženy mezi adresáře cyklickým rozdělením.

    Výchozí hodnota: Adresář systémových dat
    [ /SQLTEMPDBLOGDIR=Directory ] Určuje adresář pro logovací soubor tempdb.

    Výchozí hodnota: Adresář systémových dat
  3. Po dokončení opětovného sestavení systémových databází se instalační program vrátí do příkazového řádku bez zpráv. Zkontrolujte soubor protokolu Summary.txt a ověřte, že se proces úspěšně dokončil. Tento soubor se nachází na adrese C:\Program Files\Microsoft SQL Server\160\Setup Bootstrap\Logs.

  4. Scénář RebuildDatabase odstraní systémové databáze a znovu je nainstaluje v čistém stavu. Vzhledem k tomu, že nastavení tempdb počtu souborů se nezachová, hodnota počtu tempdb souborů není během instalace známá. Scénář ebuildDatabase proto nezná počet tempdb souborů, které se mají číst. Hodnotu počtu tempdb souborů můžete znovu zadat pomocí parametru SQLTEMPDBFILECOUNT. Pokud parametr není zadaný, RebuildDatabase přidá výchozí počet tempdb souborů, což je tolik tempdb souborů jako počet procesorů nebo 8, podle toho, co je nižší.

Úkoly po znovusestavení

Po opětovném sestavení databáze může být potřeba provést následující další úlohy:

  • Obnovte nejnovější úplné zálohy databází master, model a msdb. Další informace naleznete v tématu Zálohování a obnovení systémových databází (SQL Server).

    Důležité

    Pokud jste změnili kolaci serveru, neobnovujte systémové databáze. Tím nahradíte novou kolaci předchozím nastavením kolace.

    Pokud není záloha dostupná nebo pokud obnovená záloha není aktuální, vytvořte znovu chybějící položky. Můžete například znovu vytvořit všechny chybějící položky pro uživatelské databáze, zálohovací zařízení, přihlášení k SQL Serveru, koncové body atd. Nejlepší způsob, jak položky znovu vytvořit, je spustit původní skripty, které je vytvořily.

    Důležité

    Doporučujeme zabezpečit skripty, abyste zabránili jejich změnám neoprávněnými osobami.

  • Pokud je instance SQL Serveru nakonfigurovaná jako distributor replikace, musíte databázi obnovit distribution . Další informace najdete v tématu Zálohování a obnovení replikovaných databází.

  • Přesuňte systémové databáze do dříve zaznamenaných umístění. Další informace naleznete v tématu Přesunutí systémových databází.

  • Ověřte, že hodnoty konfigurace pro celý server odpovídají hodnotám, které jste si poznamenali dříve.

Opětovné sestavení databáze prostředků

Následující postup znovu sestaví systémovou resource databázi. Při opětovném sestavení databáze dojde ke ztrátě všech opravných balíčků, a proto je nutné je znovu aplikovat.

Opětovné sestavení databáze systému prostředků

  1. Spusťte instalační program SYSTÉMU SQL Server (setup.exe) z distribučního média.

  2. V levé navigační oblasti vyberte Možnost Údržba a pak vyberte Opravit.

  3. Spustí se pravidlo podpory instalačního programu a rutiny souborů, aby se zajistilo, že systém má nainstalované požadavky a že počítač předává ověřovací pravidla instalace. Pokračujte výběrem možnosti OK nebo Nainstalovat .

  4. Na stránce Vybrat instanci vyberte instanci, která se má opravit, a pak vyberte Další.

  5. Pravidla opravy budou spuštěna k ověření operace. Pokračujte výběrem tlačítka Next (Další).

  6. Na stránce Připraveno k opravě vyberte Opravit. Na stránce Dokončení je uvedeno, že operace je dokončená.

Vytvoření nové databáze msdb

msdb Pokud je databáze poškozená nebo podezřelá a nemáte zálohu msdb databáze, můžete vytvořit novou msdb pomocí instmsdb skriptu.

Výstraha

Opětovné sestavení databáze pomocí skriptu instmsdb.sql eliminuje veškeré informace uložené v msdb, jako jsou úlohy, výstrahy, operátoři, plány údržby, historie zálohování, nastavení správy založené na zásadách, databázová pošta, datový sklad výkonu a další.

  1. Zastavte všechny služby připojující se k databázovému stroji, včetně agenta SQL Serveru, SSRS, SSIS a všech aplikací používajících SQL Server jako úložiště dat.

  2. Spusťte SQL Server z příkazového řádku pomocí příkazu:

    NET START MSSQLSERVER /T3608
    

    Další informace naleznete v tématu Start, Stop, Pause, Resume, Restart the Database Engine, SQL Server Agent nebo SQL Server Browser Service. Informace o příznaku trasování 3608 najdete v tématu TF3608.

  3. V jiném okně příkazového řádku odpojte msdb databázi spuštěním následujícího příkazu a nahraďte <servername> instancí SQL Serveru:

    SQLCMD -E -S<servername> -dmaster -Q"EXEC sp_detach_db msdb"
    
  4. Pomocí Průzkumníka Windows přejmenujte msdb soubory databáze. Ve výchozím nastavení jsou v podsložce DATA pro instanci SQL Serveru.

  5. Pomocí nástroje SQL Server Configuration Manager zastavte a restartujte službu databázového stroje normálně bez dalších příznaků trasování.

  6. V okně příkazového řádku se připojte k SQL Serveru a spusťte příkaz:

    SQLCMD -E -S<servername> -i"C:\Program Files\Microsoft SQL Server\MSSQLXX.INSTANCE_NAME\MSSQL\Install\instmsdb.sql" -o"C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Install\instmsdb.out"
    

    Nahraďte <servername> instancí databázového stroje. Použijte cestu k souborovému systému instance SQL Serveru. Nahraďte MSSQLXX.INSTANCE_NAME také adresář, který odpovídá vaší verzi a instanci.

  7. V Poznámkovém bloku systému Windows otevřete instmsdb.out soubor a zkontrolujte případné chyby ve výstupu.

  8. Znovu aplikujte všechny aktualizace CU, které jsou nainstalovány v instanci, abyste upgradovali vaši msdb databázi na aktuální úroveň CU.

  9. Znovu vytvořte uživatelský obsah uložený v msdb databázi, například úlohy, výstrahy a další položky.

  10. Zálohujte msdb databázi.

Opětovné sestavení databáze tempdb

tempdb Pokud je databáze poškozená nebo podezřelá a databázový stroj se nepodaří spustit, můžete znovu sestavit tempdb databázi bez nutnosti znovu sestavit všechny systémové databáze.

  1. Přejmenujte aktuální tempdb.mdf a templog.ldf soubory, pokud nechybí.

  2. Spusťte SQL Server z příkazového řádku pomocí aplikace sqlservr.

    sqlservr -c -f -T3608 -T4022 -s <instance> -mSQLCMD
    

    Pro výchozí název instance použijte MSSQLSERVER, pro pojmenovanou instanci použijte MSSQL$<instance_name>. Příznak trasování 4022 zakáže spuštění uložených procedur. Umožňuje -mSQLCMD pouze sqlcmd.exe připojení k serveru. Další informace naleznete v tématu Další možnosti spuštění.

    Poznámka:

    Po spuštění SQL Serveru se ujistěte, že okno příkazového řádku zůstane otevřené. Zavřením okna příkazového řádku proces ukončíte.

  3. Připojte se k serveru pomocí sqlcmd a pak pomocí následující uložené procedury resetujte stav tempdb databáze.

    exec master..sp_resetstatus tempdb
    
  4. Vypněte server stisknutím v Ctrl+C okně příkazového řádku.

  5. Restartujte službu SQL Serveru. Tím se vytvoří nová sada souborů tempdb a obnoví se databáze tempdb.

Řešení chyb opětovného sestavení

Syntaxe a další chyby za běhu se zobrazují v okně příkazového řádku. Projděte si příkaz Setup s následujícími chybami syntaxe:

  • Před názvem každého parametru chybí značka lomítka (/).

  • Chybí symbol rovná se (=) mezi názvem parametru a hodnotou parametru.

  • Přítomnost prázdných mezer mezi názvem parametru a znakem rovnosti

  • Přítomnost čárek (,) nebo jiných znaků, které nejsou zadané v syntaxi.

Po dokončení operace opětovného sestavení zkontrolujte případné chyby v protokolech SQL Serveru. Výchozí umístění protokolu je C:\Program Files\Microsoft SQL Server\160\Setup Bootstrap\Logs. Chcete-li vyhledat soubor protokolu, který obsahuje výsledky procesu opětovného sestavení, změňte adresáře do složky Logs z příkazového řádku a spusťte findstr /s RebuildDatabase summary*.*. Toto hledání vás nasměruje na všechny soubory protokolu, které obsahují výsledky opětovného sestavení systémových databází. Otevřete soubory protokolu a prozkoumejte je, aby se zobrazily příslušné chybové zprávy.