Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Sqlmaint-verktyget utför en angiven uppsättning underhållsåtgärder på en eller flera databaser. Använd sqlmaint för att köra DBCC-kontroller, säkerhetskopiera en databas och dess transaktionslogg, uppdatera statistik och återskapa index. Alla aktiviteter för databasunderhåll genererar en rapport som kan skickas till en angiven textfil, HTML-fil eller ett e-postkonto. sqlmaint kör databasunderhållsplaner som skapats med tidigare versioner av SQL Server. Om du vill köra SQL Server-underhållsplaner från kommandotolken använder du dtexec-verktyget.
Viktigt!
Den här funktionen tas bort i en framtida version av SQL Server. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen. Använd funktionen för SQL Server-underhållsplan i stället. Mer information om underhållsplaner finns i Underhållsplaner.
Syntax
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]
Argumentpunkter
Parametrarna och deras värden måste avgränsas med ett blanksteg. Det måste till exempel finnas ett blanksteg mellan -S och server_name.
-?
Anger att syntaxdiagrammet för sqlmaint returneras. Den här parametern måste användas ensam.
-Sserver_name[ \instance_name]
Anger målinstansen för Microsoft SQL Server. Ange server_name för att ansluta till standardinstansen av SQL Server Database Engine på servern. Ange server_name\instance_name för att ansluta till en namngiven instans av databasmotorn på servern. Om ingen server anges ansluter sqlmaint till standardinstansen av Databasmotorn på den lokala datorn.
-Ulogin_ID
Anger det inloggnings-ID som ska användas när du ansluter till servern. Om det inte tillhandahålls försöker sqlmaint använda Microsoft Windows-autentisering. Om login_ID innehåller specialtecken måste det omges av dubbla citattecken ("); Annars är de dubbla citattecknen valfria.
Viktigt!
Använd Windows-autentisering när det är möjligt.
-P-lösenord
Anger lösenordet för inloggnings-ID:t. Endast giltigt om parametern -U också har angetts. Om lösenordet innehåller specialtecken måste det omges av dubbla citattecken. Annars är de dubbla citattecknen valfria.
Viktigt!
Lösenordet är inte maskerat. Använd Windows-autentisering när det är möjligt.
-Ddatabase_name
Anger namnet på databasen där underhållsåtgärden ska utföras. Om database_name innehåller specialtecken måste det omges av dubbla citattecken. Annars är de dubbla citattecknen valfria.
-PlanName-namn
Anger namnet på en databasunderhållsplan som definierats med hjälp av guiden Databasunderhållsplan. Den enda information som sqlmaint använder från planen är listan över databaserna i planen. Alla underhållsaktiviteter som du anger i de andra sqlmaint-parametrarna tillämpas på den här listan över databaser.
-PlanID-guid
Anger den globalt unika identifieraren (GUID) för en databasunderhållsplan som definierats med hjälp av guiden Databasunderhållsplan. Den enda information som sqlmaint använder från planen är listan över databaserna i planen. Alla underhållsaktiviteter som du anger i de andra sqlmaint-parametrarna tillämpas på den här listan över databaser. Detta måste matcha ett plan_id värde i msdb.dbo.sysdbmaintplans.
-Rpttext_file
Anger den fullständiga sökvägen och namnet på filen som rapporten ska genereras till. Rapporten genereras också på skärmen. Rapporten underhåller versionsinformation genom att lägga till ett datum i filnamnet. Datumet genereras på följande sätt: i slutet av filnamnet men före perioden, i formatet _yyyyMMddhhmm.
åååå = år, MM = månad, dd = dag, hh = timme, mm = minut.
Om du kör verktyget klockan 10:23 den 1 december 1996, och det här är text_file-värdet:
c:\Program Files\Microsoft SQL Server\Mssql\Backup\AdventureWorks2022_maint.rpt
Det genererade filnamnet är:
c:\Program Files\Microsoft SQL Server\Mssql\Backup\AdventureWorks2022_maint_199612011023.rpt
Det fullständiga UNC-filnamnet (Universal Naming Convention) krävs för text_file när sqlmaint kommer åt en fjärrserver.
-Tilloperator_name
Anger den operator till vilken den genererade rapporten skickas via SQL Mail.
-HtmlRpthtml_file
Anger den fullständiga sökvägen och namnet på filen som en HTML-rapport ska genereras till.
sqlmaint genererar filnamnet genom att lägga till en sträng i formatet _yyyyMMddhhmm i filnamnet, precis som för parametern -Rpt .
Det fullständiga UNC-filnamnet krävs för html_file när sqlmaint kommer åt en fjärrserver.
-DelHtmlRpt<time_period>
Anger att alla HTML-rapporter i rapportkatalogen ska tas bort om tidsintervallet efter att rapportfilen har skapats överskrider <time_period>.
-DelHtmlRpt letar efter filer vars namn passar mönstret som genereras från parametern html_file . Om html_file är c:\Program Files\Microsoft SQL Server\Mssql\Backup\AdventureWorks2022_maint.htm, orsakar -DelHtmlRptatt sqlmaint tar bort filer vars namn matchar mönstret C:\Program Files\Microsoft SQL Server\Mssql\Backup\AdventureWorks2022_maint*.htm och som är äldre än den angivna <time_period>.
-RmUnusedSpacethreshold_percent free_percent
Anger att outnyttjat utrymme ska tas bort från databasen som anges i -D. Det här alternativet är bara användbart för databaser som definieras för att växa automatiskt.
Threshold_percent anger i megabyte den storlek som databasen måste nå innan sqlmaint försöker ta bort oanvänt datautrymme. Om databasen är mindre än threshold_percent vidtas ingen åtgärd.
Free_percent anger hur mycket outnyttjat utrymme som måste finnas kvar i databasen, som anges som en procentandel av databasens slutliga storlek. Om exempelvis en 200 MB-databas innehåller 100 MB data, innebär att ange 10 för free_percent att den slutliga storleken på databasen blir 110 MB. Observera att en databas inte expanderas om den är mindre än free_percent plus mängden data i databasen. Om en 108 MB-databas till exempel har 100 MB data expanderar inte databasen till 110 MB om du anger 10 för free_percent . den ligger kvar på 108 MB.
-CkDB | -CkDBNoIdx
Anger att en DBCC CHECKDB-instruktion eller en DBCC CHECKDB-instruktion med alternativet NOINDEX ska köras i databasen som anges i -D. Mer information finns i DBCC CHECKDB.
En varning skrivs till text_file om databasen används när sqlmaint körs.
-CkAl | -CkAlNoIdx
Anger att en DBCC CHECKALLOC-instruktion med NOINDEX-alternativet ska köras i databasen som anges i -D. Mer information finns i DBCC CHECKALLOC (Transact-SQL).
-CkCat
Anger att en DBCC CHECKCATALOG-instruktion (Transact-SQL) ska köras i databasen som anges i -D. Mer information finns i DBCC CHECKCATALOG (Transact-SQL).
-UpdOptiStatsutvalda_procent
Anger att följande instruktion ska köras på varje tabell i databasen:
UPDATE STATISTICS table WITH SAMPLE sample_percent PERCENT;
Om tabellerna innehåller beräknade kolumner måste du också ange argumentet -SupportedComputedColumn när du använder -UpdOptiStats.
Mer information finns i UPPDATERA STATISTIK (Transact-SQL).
-RebldIdxfree_space
Anger att index på tabeller i måldatabasen ska återuppbyggas genom att använda procentvärdet free_space, vilket är motsatsen till fyllnadsfaktorn. Om free_space procentsats till exempel är 30 är fyllningsfaktorn 70. Om ett free_space procentvärde på 100 anges återskapas indexen med det ursprungliga fyllningsfaktorvärdet.
Om indexen finns i beräknade kolumner måste du också ange argumentet -SupportComputedColumn när du använder -RebldIdx.
-SupportComputedColumn
Måste anges för att köra DBCC-underhållskommandon med sqlmaint på beräknade kolumner.
-WriteHistory
Anger att en post ska göras i msdb.dbo.sysdbmaintplan_history för varje underhållsåtgärd som utförs av sqlmaint. Om -PlanName eller -PlanID anges använder posterna i sysdbmaintplan_history ID:t för den angivna planen. Om -D används, skapas posterna i sysdbmaintplan_history med nollor för plan-ID:t.
-BkUpDB [ backup_path] | -BkUpLog [ backup_path ]
Anger en säkerhetskopieringsåtgärd.
-BkUpDb säkerhetskopierar hela databasen.
-BkUpLog säkerhetskopierar endast transaktionsloggen.
backup_path anger katalogen för säkerhetskopian. backup_path behövs inte om -UseDefDir också anges och åsidosättas av -UseDefDir om båda anges. Säkerhetskopian kan placeras i en katalog eller en bandenhetsadress (till exempel \\.\TAPE0). Filnamnet för en databassäkerhetskopia genereras automatiskt enligt följande:
dbname_db_yyyyMMddhhmm.BAK
där
dbname är namnet på databasen som säkerhetskopieras.
yyyyMMddhhmm är tiden för säkerhetskopieringsåtgärden med åååå = år, MM = månad, dd = dag, hh = timme och mm = minut.
Filnamnet för en transaktionssäkerhetskopia genereras automatiskt med ett liknande format:
dbname_log_yyyymmddhhmm.BAK
Om du använder parametern -BkUpDB måste du också ange mediet med parametern -BkUpMedia .
-BkUpMedia
Anger medietypen för säkerhetskopian, antingen DISK eller BAND.
SKIVA
Anger att säkerhetskopieringsmediet är disk.
-DelBkUps<time_period>
För disksäkerhetskopior anger att alla säkerhetskopior i säkerhetskopieringskatalogen tas bort om tidsintervallet efter att säkerhetskopieringen har skapats överskrider <time_period>.
-CrBkSubDir
För disksäkerhetskopior anger att en underkatalog skapas i katalogen [backup_path] eller i standardkatalogen för säkerhetskopiering om -UseDefDir också har angetts. Namnet på underkatalogen genereras från databasnamnet som anges i -D.
-CrBkSubDir erbjuder ett enkelt sätt att placera alla säkerhetskopior för olika databaser i separata underkataloger utan att behöva ändra parametern backup_path .
-UseDefDir
För disksäkerhetskopior anger att säkerhetskopieringsfilen skapas i standardkatalogen för säkerhetskopiering.
UseDefDir åsidosätter backup_path om båda anges. Med en standardinställning för Microsoft SQL Server är standardkatalogen för säkerhetskopiering C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup.
BAND
Anger att säkerhetskopieringsmediet är band.
-BkUpOnlyIfClean
Anger att säkerhetskopieringen endast sker om några angivna -Ck-kontroller inte hittade problem med data. Underhållsåtgärder körs i samma sekvens som de visas i kommandotolken. Ange parametrarna -CkDB, -CkDBNoIdx, -CkAl, -CkAlNoIdx, -CkTxtAl eller -CkCat före parametrarna -BkUpDB/-BkUpLog om du också ska ange -BkUpOnlyIfClean, eller om säkerhetskopieringen sker oavsett om kontrollen rapporterar problem eller inte.
-VrfyBackup
Anger att RESTORE VERIFYONLY ska köras på säkerhetskopian när den är klar.
number[minuter| timmar| dag| veckor| månader]
Anger det tidsintervall som används för att avgöra om en rapport eller säkerhetskopia är tillräckligt gammal för att tas bort.
talet är ett heltal följt (utan utrymme) av en tidsenhet. Giltiga exempel:
12weeks
3månader
15 dagar
Om endast tal anges är standarddatumdelen veckor.
Anmärkningar
Sqlmaint-verktyget utför underhållsåtgärder på en eller flera databaser. Om -D anges utförs de åtgärder som anges i de återstående växlarna endast på den angivna databasen. Om -PlanName eller -PlanID anges är den enda information som sqlmaint hämtar från den angivna underhållsplanen listan över databaser i planen. Alla åtgärder som anges i de återstående sqlmaint-parametrarna tillämpas på varje databas i listan som hämtas från planen. Sqlmaint-verktyget tillämpar inte någon av underhållsaktiviteterna som definierats i själva planen.
Sqlmaint-verktyget returnerar 0 om det körs korrekt eller 1 om det misslyckas. Ett felmeddelande rapporteras.
Om någon av underhållsåtgärderna misslyckas.
Om -CkDB, -CkDBNoIdx, -CkAl, -CkAlNoIdx, -CkTxtAl eller -CkCat kontrollerar hittar du problem med data.
Om ett allmänt fel påträffas.
Behörigheter
Sqlmaint-verktyget kan köras av alla Windows-användare med läs- och körbehörighet på sqlmaint.exe, som standard lagras i x:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER1\MSSQL\Binn mappen. Dessutom måste SQL Server-inloggningen som anges med -login_ID ha de SQL Server-behörigheter som krävs för att utföra den angivna åtgärden. Om anslutningen till SQL Server använder Windows-autentisering måste SQL Server-inloggningen som mappas till den autentiserade Windows-användaren ha de SQL Server-behörigheter som krävs för att utföra den angivna åtgärden.
Om du till exempel använder -BkUpDB krävs behörighet för att köra BACKUP-instruktionen. Och med argumentet -UpdOptiStats krävs behörighet att köra instruktionen UPDATE STATISTICS. Mer information finns i avsnitten "Behörigheter" i motsvarande avsnitt i Books Online.
Exempel
A. Utföra DBCC-kontroller på en databas
sqlmaint -S MyServer -D AdventureWorks2022 -CkDB -CkAl -CkCat -Rpt C:\MyReports\AdvWks_chk.rpt
B. Uppdaterar statistik med hjälp av ett 15% exempel i alla databaser i en plan. Krymp också någon av databasen som har nått 110 MB till att bara ha 10% ledigt utrymme
sqlmaint -S MyServer -PlanName MyUserDBPlan -UpdOptiStats 15 -RmUnusedSpace 110 10
C. Säkerhetskopiera alla databaser enligt en plan till deras enskilda underkataloger i standardkatalogen x:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup. Ta också bort säkerhetskopior som är äldre än 2 veckor
sqlmaint -S MyServer -PlanName MyUserDBPlan -BkUpDB -BkUpMedia DISK -UseDefDir -CrBkSubDir -DelBkUps 2weeks
D. Säkerhetskopiera en databas till standardvärdet x:\Program Files\Microsoft SQL Server\MSSQL13. MSSQLSERVER\MSSQL\Backup-katalog.\
sqlmaint -S MyServer -BkUpDB -BkUpMedia DISK -UseDefDir
Se även
Säkerhetskopiering (Transact-SQL)
UPPDATERINGSSTATISTIK (Transact-SQL)