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
Nástroj sqlmaint provádí zadanou sadu operací údržby v jedné nebo více databázích. Pomocí sqlmaint můžete spouštět DBCC kontroly, zálohovat databázi a její transakční protokol, aktualizovat statistiky a znovu sestavit indexy. Všechny aktivity údržby databáze generují sestavu, kterou můžete odeslat do určeného textového souboru, souboru HTML nebo e-mailového účtu.
Sqlmaint spouští plány údržby databáze vytvořené v předchozích verzích SQL Serveru. Chcete-li spustit plány údržby SQL Serveru z příkazového řádku, použijte nástroj dtexec.
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í. Místo toho použijte funkci plánu údržby SQL Serveru. Další informace o plánech údržby najdete v tématu Plány údržby.
Syntaxe
sqlmaint
[ -? ] |
[
[ -S server_name [ \instance_name ] ]
[ -U login_ID [ -P password ] ]
{
[ -D database_name | -PlanName name | -PlanID guid ]
[ -Rpt text_file ]
[ -To operator_name ]
[ -HtmlRpt html_file [ -DelHtmlRpt <time_period> ] ]
[ -RmUnusedSpace threshold_percentfree_percent ]
[ -CkDB | -CkDBNoIdx ]
[ -CkAl | -CkAlNoIdx ]
[ -CkCat ]
[ -UpdOptiStats sample_percent ]
[ -RebldIdx free_space ]
[ -SupportComputedColumn ]
[ -WriteHistory ]
[
{ -BkUpDB [ backup_path ] | -BkUpLog [ backup_path ] }
{ -BkUpMedia
{ DISK [
[ -DelBkUps <time_period> ]
[ -CrBkSubDir ]
[ -UseDefDir ]
]
| TAPE
}
}
[ -BkUpOnlyIfClean ]
[ -VrfyBackup ]
]
}
]
<time_period> ::=
number [ minutes | hours | days | weeks | months ]
Argumenty
Oddělte parametry a jejich hodnoty mezerou. Můžete například zahrnout mezeru mezi -S a server_name.
-?
Vrátí diagram syntaxe pro sqlmaint. Tento parametr použijte samostatně.
-S server_name[\instance_name]
Určuje cílovou instanci SQL Serveru. Zadejte <server_name> , aby se na tomto serveru připojil k výchozí instanci databázového stroje SQL Serveru. Zadejte <server_name>\<instance_name> pro připojení k pojmenované instanci databázového stroje na tomto serveru. Pokud nezadáte server, sqlmaint se připojí k výchozí instanci databázového stroje na místním počítači.
-U login_ID
Určuje účet, který se má použít při připojování k serveru. Pokud tento parametr nezadáte, pokusí se sqlmaint použít ověřování systému Windows. Pokud login_ID obsahuje speciální znaky, uzavřete ho do uvozovek ("); v opačném případě jsou dvojité uvozovky volitelné.
Důležité
Pokud je to možné, použijte ověřování systému Windows.
-P heslo
Určuje heslo pro login_ID. Tento parametr je platný pouze v případě, že také zadáte parametr -U. Pokud heslo obsahuje speciální znaky, uzavřete ho do uvozovek; v opačném případě jsou dvojité uvozovky volitelné.
Důležité
Heslo není maskované. Pokud je to možné, použijte ověřování systému Windows.
-D database_name
Určuje název databáze, ve které se má provést operace údržby. Pokud database_name obsahuje speciální znaky, uzavřete ho do uvozovek; v opačném případě jsou dvojité uvozovky volitelné.
-PlanName name
Určuje název plánu údržby databáze definovaného pomocí Průvodce plánem údržby databáze. Jedinými informacemi, které sqlmaint používá z plánu, je seznam databází v plánu. Všechny aktivity údržby, které zadáte v dalších parametrech sqlmaint , se použijí na tento seznam databází.
-PlanID guid
Určuje globálně jedinečný identifikátor (GUID) plánu údržby databáze definovaného pomocí Průvodce plánem údržby databáze. Jedinými informacemi, které sqlmaint používá, je seznam databází v plánu. Všechny aktivity údržby, které zadáte v dalších parametrech sqlmaint , se použijí na tento seznam databází. Tato hodnota musí odpovídat hodnotě plan_id v msdb.dbo.sysdbmaintplans.
-Rpt text_file
Určuje úplnou cestu a název souboru pro vygenerovanou sestavu. Sestava se také vygeneruje na obrazovce. Sestava uchovává informace o verzi tak, že přidává datum do názvu souboru. Datum se generuje následujícím způsobem: na konci názvu souboru, ale před tečkou, ve formě _<yyyyMMddhhmm>.
<yyyy> = rok, <MM> = měsíc, <dd> = den, <hh> = hodina, <mm> = minuta.
Pokud nástroj spustíte v 10:23 1. prosince 1996 a toto je hodnota text_file :
C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint.rpt
Vygenerovaný název souboru:
C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint_199612011023.rpt
Úplný název souboru UNC (Universal Naming Convention) se vyžaduje pro text_file , když sqlmaint přistupuje ke vzdálenému serveru.
- operator_name
Určuje operátora, kterému se vygenerovaná sestava odesílá prostřednictvím SQL Mail.
-HtmlRpt html_file
Určuje úplnou cestu a název souboru, do kterého se generuje sestava HTML.
Sqlmaint vygeneruje název souboru připojením řetězce formátu _<yyyyMMddhhmm> k názvu souboru stejně jako u parametru -Rpt .
Úplný název souboru UNC se vyžaduje pro html_file, když sqlmaint přistupuje ke vzdálenému serveru.
-DelHtmlRpt <time_period>
Odstraní jakýkoliv HTML report v adresáři reportů, pokud časový interval po vytvoření souboru reportu překročí time_period.
-DelHtmlRpt vyhledá soubory, jejichž název odpovídá vzoru vygenerovanému z parametru html_file . Pokud je html_fileC:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint.htm, pak -DelHtmlRpt způsobí, že sqlmaint odstraní všechny soubory, jejichž názvy odpovídají vzoru C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint*.htm a které jsou starší než zadané časové období .
-RmUnusedSpace threshold_percent free_percent
Určuje, že nevyužité místo je odebráno z databáze zadané v -D. Tato možnost je užitečná jenom pro databáze, které jsou definované tak, aby se automaticky zvětšují.
Threshold_percent určuje v megabajtech velikost, ke které se databáze musí dostat, než se sqlmaint pokusí odebrat nepoužívané datové místo. Pokud je databáze menší než threshold_percent, není provedena žádná akce.
Free_percent určuje, kolik nevyužitého místa musí zůstat v databázi, zadané v procentech konečné velikosti databáze.
Pokud například databáze 200 MB obsahuje 100 MB dat, zadáním 100 MB pro free_percent bude konečná velikost databáze 110 MB. Databáze se nezvětšuje, pokud je její velikost menší než free_percent a množství dat v ní. Pokud má například databáze o velikosti 108 MB 100 MB dat, zadání hodnoty 10 pro free_percent nerozšíří databázi na 110 MB; zůstane na 108 MB.
-CkDB | -CkDBNoIdx
Určuje, že příkaz DBCC CHECKDB nebo DBCC CHECKDB příkaz s NOINDEX možností běží v databázi zadané v -D.
Sqlmaint zapíše upozornění na text_file , pokud se databáze používá při spuštění.
-CkAl | -CkAlNoIdx
Určuje, že příkaz DBCC CHECKALLOC s NOINDEX možností běží v databázi zadané v -D.
-CkCat
Určuje, že příkaz DBCC CHECKCATALOG běží v databázi zadané v -D.
-UpdOptiStats sample_percent
Určuje, že následující příkaz běží na každé tabulce v databázi:
UPDATE STATISTICS table WITH SAMPLE sample_percent PERCENT;
Pokud tabulky obsahují počítané sloupce, je při použití -UpdOptiStats nutné zadat také argument -SupportedComputedColumn.
Další informace naleznete v tématu UPDATE STATISTICS.
-RebldIdx free_space
Určuje, že indexy tabulek v cílové databázi by měly být znovu sestaveny pomocí procentuální hodnoty free_space jako inverze faktoru zaplnění. Pokud je například free_space procento 30, použije se faktor výplně 70. Pokud je zadána free_space procentuální hodnota 100, indexy se znovu sestaví s původní hodnotou faktoru výplně.
Pokud jsou indexy ve vypočítaných sloupcích, je nutné zadat také -SupportComputedColumn argument při použití -RebldIdx.
-Podpora počítaného sloupce
Je nutné zadat, aby se spouštěly DBCC příkazy údržby s sqlmaintem ve vypočítaných sloupcích.
-WriteHistory
Určuje, že položka je vytvořena v msdb.dbo.sysdbmaintplan_history pro každou akci údržby provedenou sqlmaint. Pokud je zadána -PlanName nebo -PlanID, položky v sysdbmaintplan_history používají ID zadaného plánu. Pokud je -D zadána, položky sysdbmaintplan_history jsou provedeny s nulami pro ID plánu.
-BkUpDB [ backup_path ] | -BkUpLog [ backup_path ]
Určuje akci zálohování.
-BkUpDb zálohuje celou databázi.
-BkUpLog zálohuje pouze transakční protokol.
backup_path určuje adresář pro zálohování.
backup_path není potřeba, pokud -UseDefDir je zadána také, a -UseDefDir pokud jsou zadány oba, přepíše backup_path . Zálohu lze umístit do adresáře nebo adresy páskového zařízení (například \\.\TAPE0). Název souboru zálohy databáze se vygeneruje automaticky následujícím způsobem:
dbname_db_yyyyMMddhhmm.BAK
Where:
-
<dbname>je název zálohované databáze. -
<yyyyMMddhhmm>je čas operace zálohování s<yyyy>= rok,<MM>= měsíc,<dd>= den,<hh>= hodina a<mm>= minuta.
Název souboru pro zálohování transakcí se generuje automaticky s podobným formátem:
dbname_log_yyyymmddhhmm.BAK
Pokud použijete -BkUpDB parametr, musíte také zadat médium pomocí parametru -BkUpMedia .
-BkUpMedia
Určuje typ média zálohování, a to buď DISK nebo TAPE.
DISK
Určuje, že záložní médium je disk.
-DelBkUps <time_period>
U záloh disků určuje, že se všechny záložní soubory v adresáři zálohování odstraní, pokud časový interval po vytvoření zálohy překročí time_period.
-CrBkSubDir
U záloh disků určuje, že se podadresář vytvoří v adresáři backup_path nebo ve výchozím záložním adresáři, pokud -UseDefDir je zadán také. Název podadresáře se vygeneruje z názvu databáze zadaného v -D.
-CrBkSubDir nabízí snadný způsob, jak umístit všechny zálohy pro různé databáze do samostatných podadresářů, aniž byste museli změnit parametr backup_path .
-UseDefDir
U záloh disků určuje, že se záložní soubor vytvoří ve výchozím adresáři zálohování.
UseDefDir přepíše backup_path , pokud jsou zadány oba. Při výchozím nastavení SQL Serveru je C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backupvýchozí záložní adresář .
PÁSKU
Určuje, že záložní médium je páska.
-BkUpOnlyIfClean
Určuje, že k zálohování dochází pouze v případě, že zadané -Ck kontroly nenajdou problémy s daty. Akce údržby se spouštějí ve stejném pořadí jako v příkazovém řádku. Zadejte parametry -CkDB, , -CkDBNoIdx, -CkAl, -CkAlNoIdx-CkTxtAl, nebo -CkCat před -BkUpDB nebo -BkUpLog parametry, pokud také zadáte -BkUpOnlyIfClean. Pokud tyto parametry nezadáte, zálohování proběhne bez ohledu na to, jestli kontrola hlásí problémy.
-VrfyBackup
Určuje, že RESTORE VERIFYONLY se po dokončení zálohování spustí.
number [ minuty| hodiny| den| týdny| měsíce ]
Určuje časový interval použitý k určení, jestli je zpráva nebo záložní soubor dostatečně starý pro odstranění. Number je celé číslo následované (bez mezery) jednotkou času. Platné příklady:
12weeks3months15days
Pokud zadáte pouze číslo, výchozí část data je weeks.
Poznámky
Nástroj sqlmaint provádí operace údržby v jedné nebo více databázích. Pokud zadáte -D, nástroj provede operace zadané ve zbývajících přepínačích pouze v zadané databázi. Pokud zadáte -PlanName nebo -PlanID, jediné informace , které sqlmaint načte ze zadaného plánu údržby, je seznam databází v plánu. Všechny operace zadané ve zbývajících parametrech sqlmaint se použijí pro každou databázi v seznamu získaném z plánu. Nástroj sqlmaint nepoužije žádnou z aktivit údržby definovaných v samotném plánu.
Nástroj sqlmaint vrátí hodnotu 0, pokud se úspěšně spustí, nebo 1, pokud selže. Selhání se ohlásí, pokud:
Některá z akcí údržby selže.
Kontroly
-CkDB,-CkDBNoIdx,-CkAl,-CkAlNoIdx,-CkTxtAlnebo-CkCatzjistí problémy s daty.Došlo k obecné chybě.
Dovolení
Každý uživatel Systému Windows s oprávněním Číst a Spustit může sqlmaint.exe spustit nástroj sqlmaint . Ve výchozím nastavení je sqlmaint.exe uloženo ve složce <X>:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER1\MSSQL\Binn. Kromě toho musí mít zadané přihlášení -login_ID k SQL Serveru oprávnění SQL Serveru požadovaná k provedení zadané akce. Pokud pro připojení k SQL Serveru používáte ověřování systému Windows, musí mít přihlašovací jméno SYSTÉMU SQL Server namapované na ověřeného uživatele systému Windows oprávnění SQL Serveru požadovaná k provedení zadané akce.
Například použití -BkUpDB vyžaduje oprávnění ke spuštění BACKUP příkazu. A použití argumentu -UpdOptiStats vyžaduje oprávnění ke spuštění UPDATE STATISTICS příkazu. Další informace naleznete v tématu Oprávnění (databázový stroj).
Příklady
A. Provádění kontrol DBCC v databázi
V tomto příkladu se spustí DBCC kontroly proti databázi.
sqlmaint -S MyServer -D AdventureWorks2022 -CkDB -CkAl -CkCat -Rpt C:\MyReports\AdvWks_chk.rpt
B. Aktualizace statistik
Tento příklad aktualizuje statistiky pomocí 15% vzorku ve všech databázích, které jsou součástí plánu. Každá databáze, která dosáhne 110 MB, se zvětší, aby měla jenom 10% volného místa.
sqlmaint -S MyServer -PlanName MyUserDBPlan -UpdOptiStats 15 -RmUnusedSpace 110 10
C. Zálohování všech databází
Tento příklad zálohuje všechny databáze v plánu do jednotlivých podadresářů pomocí výchozího <X>:\Program Files\Microsoft SQL Server\MSSQLl13.MSSQLSERVER\MSSQL\Backup adresáře. Odstraní také všechny zálohy starší než dva týdny.
sqlmaint -S MyServer -PlanName MyUserDBPlan -BkUpDB -BkUpMedia DISK -UseDefDir -CrBkSubDir -DelBkUps 2weeks
D. Zálohování databáze
Tento příklad zálohuje jednu databázi do výchozího <X>:\Program Files\Microsoft SQL Server\MSSQLl13.MSSQLSERVER\MSSQL\Backup adresáře.
sqlmaint -S MyServer -BkUpDB -BkUpMedia DISK -UseDefDir
Související obsah
- BACKUP (Transact-SQL)
- UPDATE STATISTICS (Transact-SQL)