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
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í.
Zaznamená všechny hodnoty konfigurace pro celý server.
SELECT * FROM sys.configurations;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;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'));Vyhledejte aktuální zálohu databází
master,modelamsdb.Pokud je instance SQL Serveru nakonfigurovaná jako distributor replikace, vyhledejte aktuální zálohu
distributiondatabáze.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.
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 jeC:\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 nasetup\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
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.exesouboru 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\SQLServer2022V 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 tempdbsouborů. 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 tempdbdatové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 tempdbMB. 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 tempdbsouboru 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 tempdbsouboru 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 tempdbdatové soubory. Při zadávání více než jednoho adresáře oddělte adresáře mezerou. Pokud je zadáno více adresářů,tempdbdatové 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 datPo 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.Scénář RebuildDatabase odstraní systémové databáze a znovu je nainstaluje v čistém stavu. Vzhledem k tomu, že nastavení
tempdbpočtu souborů se nezachová, hodnota počtutempdbsouborů není během instalace známá. Scénář ebuildDatabase proto nezná počettempdbsouborů, které se mají číst. Hodnotu počtutempdbsouborů můžete znovu zadat pomocí parametru SQLTEMPDBFILECOUNT. Pokud parametr není zadaný, RebuildDatabase přidá výchozí počettempdbsouborů, což je toliktempdbsouborů 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,modelamsdb. 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ů
Spusťte instalační program SYSTÉMU SQL Server (
setup.exe) z distribučního média.V levé navigační oblasti vyberte Možnost Údržba a pak vyberte Opravit.
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 .
Na stránce Vybrat instanci vyberte instanci, která se má opravit, a pak vyberte Další.
Pravidla opravy budou spuštěna k ověření operace. Pokračujte výběrem tlačítka Next (Další).
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ší.
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.
Spusťte SQL Server z příkazového řádku pomocí příkazu:
NET START MSSQLSERVER /T3608Další 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.
V jiném okně příkazového řádku odpojte
msdbdatabá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"Pomocí Průzkumníka Windows přejmenujte
msdbsoubory databáze. Ve výchozím nastavení jsou v podsložce DATA pro instanci SQL Serveru.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í.
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ďteMSSQLXX.INSTANCE_NAMEtaké adresář, který odpovídá vaší verzi a instanci.V Poznámkovém bloku systému Windows otevřete
instmsdb.outsoubor a zkontrolujte případné chyby ve výstupu.Znovu aplikujte všechny aktualizace CU, které jsou nainstalovány v instanci, abyste upgradovali vaši
msdbdatabázi na aktuální úroveň CU.Znovu vytvořte uživatelský obsah uložený v
msdbdatabázi, například úlohy, výstrahy a další položky.Zálohujte
msdbdatabá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.
Přejmenujte aktuální
tempdb.mdfatemplog.ldfsoubory, pokud nechybí.Spusťte SQL Server z příkazového řádku pomocí aplikace sqlservr.
sqlservr -c -f -T3608 -T4022 -s <instance> -mSQLCMDPro výchozí název instance použijte
MSSQLSERVER, pro pojmenovanou instanci použijteMSSQL$<instance_name>. Příznak trasování 4022 zakáže spuštění uložených procedur. Umožňuje-mSQLCMDpouze 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.
Připojte se k serveru pomocí sqlcmd a pak pomocí následující uložené procedury resetujte stav
tempdbdatabáze.exec master..sp_resetstatus tempdbVypněte server stisknutím v
Ctrl+Cokně příkazového řádku.Restartujte službu SQL Serveru. Tím se vytvoří nová sada souborů
tempdba obnoví se databázetempdb.
Ř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.