Sdílet prostřednictvím


nástroj sqlmaint

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:

  • 12weeks
  • 3months
  • 15days

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, -CkTxtAl nebo -CkCat zjistí 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