Megosztás:


sqlmaint segédprogram

A következőkre vonatkozik:SQL Server

Az sqlmaint segédprogram meghatározott karbantartási műveleteket hajt végre egy vagy több adatbázisban. Az sqlmaint használatával futtathat DBCC ellenőrzéseket, biztonsági másolatot készít egy adatbázisról és annak tranzakciónaplójáról, frissítheti a statisztikákat, és újraépítheti az indexeket. Minden adatbázis-karbantartási tevékenység létrehoz egy jelentést, amelyet elküldhet egy kijelölt szövegfájlba, HTML-fájlba vagy e-mail-fiókba. Az sqlmaint végrehajtja az SQL Server korábbi verzióiban létrehozott adatbázis-karbantartási terveket. Az SQL Server karbantartási terveinek parancssorból való futtatásához használja a dtexec segédprogramot.

Fontos

Ez a funkció az SQL Server egy későbbi verziójában lesz eltávolítva. Ne használja ezt a funkciót az új fejlesztési munkában, és tervezze meg a funkciót jelenleg használó alkalmazások módosítását. Ehelyett használja az SQL Server karbantartási terv funkcióját. A karbantartási tervekről további információt a Karbantartási tervek című témakörben talál.

Szemantika

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 ]

Érvek

A paramétereket és azok értékeit szóközzel kell elválasztaniuk. Adjon meg például egy szóközt a -S között.

-?

Az sqlmaint szintaxisdiagramjának visszaadása. Használja ezt a paramétert önállóan.

-S server_name[\instance_name]

Az SQL Server célpéldányát adja meg. Adja meg <server_name> az SQL Server adatbázismotor alapértelmezett példányához való csatlakozást a kiszolgálón. Adja meg <server_name>\<instance_name> , hogy csatlakozni szeretne a kiszolgálón található adatbázismotor nevesített példányához. Ha nem ad meg kiszolgálót, az sqlmaint a helyi számítógépen az adatbázismotor alapértelmezett példányához csatlakozik.

-U login_ID

Megadja a kiszolgálóhoz való csatlakozáskor használni kívánt fiókot. Ha nem adja meg ezt a paramétert, az sqlmaint megkísérli használni a Windows-hitelesítést. Ha login_ID speciális karaktereket tartalmaz, tegye idézőjelek közé ("); ellenkező esetben a dupla idézőjelek nem kötelezőek.

Fontos

Ha lehetséges, windowsos hitelesítést használjon.

-P jelszó

Megadja a login_ID jelszavát. Ez a paraméter csak akkor érvényes, ha a paramétert -U is megadja. Ha a jelszó speciális karaktereket tartalmaz, tegye idézőjelek közé; ellenkező esetben a kettős idézőjelek megadása nem kötelező.

Fontos

A jelszó nincs elfedve. Ha lehetséges, windowsos hitelesítést használjon.

-D database_name

Annak az adatbázisnak a nevét adja meg, amelyben a karbantartási műveletet végre szeretné hajtani. Ha database_name speciális karaktereket tartalmaz, tegye idézőjelek közé; ellenkező esetben a kettős idézőjelek megadása nem kötelező.

-PlanName név

Az Adatbázis-karbantartási terv varázslóval definiált adatbázis-karbantartási terv nevét adja meg. Az sqlmaint által a tervben használt egyetlen információ a tervben lévő adatbázisok listája. A többi sqlmaint paraméterben megadott karbantartási tevékenységek az adatbázisok ezen listájára lesznek alkalmazva.

-PlanID guid

Az Adatbázis-karbantartási terv varázslóval definiált adatbázis-karbantartási terv globálisan egyedi azonosítóját (GUID) adja meg. Az sqlmaint csak a tervben szereplő adatbázisok listáját használja. A többi sqlmaint paraméterben megadott karbantartási tevékenységek az adatbázisok ezen listájára lesznek alkalmazva. Ennek az értéknek meg kell egyeznie a msdb.dbo.sysdbmaintplans-beli plan_id értékkel.

-Rpt szövegfájl

Megadja a létrehozott jelentés teljes elérési útját és fájlnevét. A jelentés a képernyőn is létre lesz hozva. A jelentés úgy tartja karban a verzióadatokat, hogy hozzáad egy dátumot a fájlnévhez. A dátum a következő módon jön létre, a fájlnév végén, de a pont előtt, formátumban _<yyyyMMddhhmm>. <yyyy> = év, <MM> = hónap, <dd> = nap, <hh> = óra, <mm> = perc.

Ha a segédprogramot 1996. december 1-jén 10:23-kor futtatja, és ez a text_file érték:

C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint.rpt

A létrehozott fájlnév a következő:

C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint_199612011023.rpt

A teljes univerzális elnevezési konvenció (UNC) fájlnév szükséges, amikor sqlmaint egy távoli kiszolgálóhoz fér hozzá text_file-hoz.

-A operator_name

Megadja azt az operátort, akinek a létrehozott jelentést az SQL Mailen keresztül küldi el a rendszer.

-HtmlRpt html_file

Megadja annak a fájlnak a teljes elérési útját és nevét, amelybe HTML-jelentést hoz létre. Az sqlmaint úgy hozza létre a fájlnevet, hogy hozzáfűz egy formátum _<yyyyMMddhhmm> sztringet a fájlnévhez, ugyanúgy, mint a -Rpt paraméter esetében.

A teljes UNC-fájlnév szükséges html_file, amikor sqlmaint elér egy távoli kiszolgálót.

-DelHtmlRpt <time_period>

Törli a jelentés könyvtárában lévő HTML-jelentést, ha a jelentésfájl létrehozása utáni időintervallum meghaladja a time_period időtartamot. -DelHtmlRpt Olyan fájlokat keres, amelyek neve megfelel a html_file paraméterből létrehozott mintának. Ha html_file van C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint.htm, akkor -DelHtmlRpt az sqlmaint törli azokat a fájlokat, amelyek neve megegyezik a mintával C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint*.htm , és amelyek régebbiek a megadott time_period.

-RmUnusedSpace threshold_percent free_percent

Megadja, hogy a rendszer eltávolítja a fel nem használt területet a megadott -Dadatbázisból. Ez a beállítás csak olyan adatbázisok esetében hasznos, amelyek automatikusan növekednek. Threshold_percent megabájtban adja meg az adatbázis méretét, mielőtt az sqlmaint megkísérelné eltávolítani a nem használt adatterületet. Ha az adatbázis kisebb, mint a threshold_percent, nem történik művelet. Free_percent megadja, hogy mennyi kihasználatlan terület maradjon az adatbázisban az adatbázis végső méretének százalékában megadva.

Ha például egy 200 MB-os adatbázis 100 MB adatot tartalmaz, akkor ha a free_percent értékét 10-re állítja, az adatbázis végső mérete 110 MB lesz. Az adatbázis nem lesz bővítve, ha kisebb, mint free_percent plusz az adatbázisban lévő adatok mennyisége. Ha például egy 108 MB-os adatbázis 100 MB-os adatokkal rendelkezik, a 10 free_percent megadása nem bontja ki az adatbázist 110 MB-ra; 108 MB marad.

-CkDB | -CkDBNoIdx

Megadja, hogy egy DBCC CHECKDB utasítás vagy egy DBCC CHECKDB beállítással rendelkező NOINDEX utasítás fut-e a megadott -Dadatbázisban.

Az sqlmaint figyelmeztetést ír text_file , ha az adatbázis fut.

-CkAl | -CkAlNoIdx

Megadja, hogy a(z) DBCC CHECKALLOC utasítás a NOINDEX beállítással a -D megadott adatbázisban fusson.

-CkCat

Megadja, hogy a DBCC CHECKCATALOG utasítás a megadott adatbázisban fusson -D.

-UpdOptiStats sample_percent

Megadja, hogy a következő utasítás fut-e az adatbázis minden tábláján:

UPDATE STATISTICS table WITH SAMPLE sample_percent PERCENT;

Ha a táblák számított oszlopokat tartalmaznak, akkor az -SupportedComputedColumn argumentumot is meg kell adni a -UpdOptiStats használata során.

További információ: UPDATE STATISTICS.

-RebldIdx free_space

Azt határozza meg, hogy a céladatbázis tábláinak indexeit a free_space százalékértékkel kell újraépíteni a kitöltési tényező inverzeként. Ha például free_space százalék 30, akkor a használt kitöltési tényező 70. Ha free_space 100 százalékos értéket ad meg, az indexek újraépülnek az eredeti kitöltési tényező értékével.

Ha az indexek számított oszlopokon találhatók, akkor a -SupportComputedColumn használata során meg kell adnia az -RebldIdx argumentumot.

-SupportSzámítottOszlop

Meg kell adni a karbantartási parancsok futtatásához DBCCsqlmainttel a számított oszlopokon.

-WriteHistory

Meghatározza, hogy bejegyzés készül minden karbantartási művelethez, amelyet a sqlmaint hajt végre. Ha -PlanName meg van adva vagy -PlanID meg van adva, a bejegyzések a megadott terv azonosítóját használják sysdbmaintplan_history . Ha -D meg van adva, a beírt bejegyzések sysdbmaintplan_history nullákkal készülnek a tervazonosítóhoz.

-BkUpDB [ backup_path ] | -BkUpLog [ backup_path ]

Biztonsági mentési műveletet ad meg. -BkUpDb biztonsági másolatot készít a teljes adatbázisról. -BkUpLog csak a tranzakciónaplóról készít biztonsági másolatot.

backup_path a biztonsági mentés könyvtárát adja meg. backup_path nincs szükség, ha -UseDefDir szintén meg van adva, és -UseDefDir felülbírálja backup_path , ha mindkettő meg van adva. A biztonsági mentés elhelyezhető egy könyvtárban vagy egy szalagos eszközcímben (például \\.\TAPE0). Az adatbázis biztonsági mentésének fájlneve automatikusan létrejön az alábbiak szerint:

dbname_db_yyyyMMddhhmm.BAK

Where:

  • <dbname> a biztonsági mentés alatt álló adatbázis neve.
  • <yyyyMMddhhmm> a biztonsági mentési művelet <yyyy> időpontja = év, <MM> = hónap, <dd> = nap, <hh> = óra és <mm> = perc.

A tranzakciós biztonsági mentés fájlneve automatikusan, hasonló formátumban jön létre:

dbname_log_yyyymmddhhmm.BAK

Ha a -BkUpDB paramétert használja, akkor a -BkUpMedia paraméter használatával meg kell adnia az adathordozót is.

-BkUpMedia

A biztonsági mentés adathordozó típusát adja meg, vagy DISK vagy TAPE.

LEMEZ

Megadja, hogy a biztonsági mentési adathordozó lemez-e.

-DelBkUps <time_period>

Lemezes biztonsági mentések esetén azt adja meg, hogy a biztonsági mentési könyvtárban lévő biztonsági mentési fájlokat törölni kell, ha a biztonsági mentés létrehozását követő időintervallum meghaladja a time_period.

-CrBkSubDir

Lemezes biztonsági mentések esetén azt adja meg, hogy egy alkönyvtárat kell létrehozni a backup_path könyvtárban vagy az alapértelmezett biztonsági mentési könyvtárban, ha -UseDefDir az is meg van adva. Az alkönyvtár neve a megadott -Dadatbázisnévből jön létre. -CrBkSubDir A backup_path paraméter módosítása nélkül egyszerűen helyezheti el a különböző adatbázisok biztonsági mentéseit külön alkönyvtárakba.

-UseDefDir

Lemezes biztonsági mentések esetén azt adja meg, hogy a biztonsági mentési fájl az alapértelmezett biztonsági mentési könyvtárban legyen létrehozva. UseDefDir felülbírálja backup_path , ha mindkettő meg van adva. Az SQL Server alapértelmezett beállításával az alapértelmezett biztonsági mentési könyvtár a következő C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup: .

SZALAG

Megadja, hogy a biztonsági mentési adathordozó szalagos-e.

-BkUpOnlyIfClean

Megadja, hogy a biztonsági mentés csak akkor történjen meg, ha a megadott -Ck ellenőrzések nem találnak problémát az adatokkal kapcsolatban. A karbantartási műveletek ugyanabban a sorrendben futnak, mint a parancssorban. Adja meg a paramétereket -CkDB, -CkDBNoIdx, -CkAl, -CkAlNoIdx, -CkTxtAl, vagy -CkCat mielőtt az -BkUpDB vagy -BkUpLog paramétert, ha a -BkUpOnlyIfClean-t is meg szeretné adni. Ha nem adja meg ezeket a paramétereket, a biztonsági mentés akkor is megtörténik, ha az ellenőrzés problémákat jelez.

-VrfyBackup

Azt adja meg, hogy RESTORE VERIFYONLY a biztonsági mentés befejezése után fut.

szám [ perc| óra| nap| hét| hónap ]

Megadja az időintervallumot, amellyel megállapíthatja, hogy egy jelentés vagy biztonsági mentési fájl elég régi-e ahhoz, hogy törölhető legyen. a szám egy egész szám, amelyet egy időegység követ (szóköz nélkül). Érvényes példák:

  • 12weeks
  • 3months
  • 15days

Ha csak számot ad meg, az alapértelmezett dátumrész a következő weeks.

Megjegyzések

Az sqlmaint segédprogram karbantartási műveleteket hajt végre egy vagy több adatbázisban. Ha megadja -D, a segédprogram csak a megadott adatbázison hajtja végre a többi kapcsolóban megadott műveleteket. Ha megadja -PlanName vagy -PlanID, az sqlmaint által a megadott karbantartási tervből lekérhető egyetlen információ a tervben lévő adatbázisok listája. A rendszer a többi sqlmaint paraméterben megadott összes műveletet alkalmazza a tervből beszerzett listában szereplő összes adatbázisra. Az sqlmaint segédprogram nem alkalmazza a tervben meghatározott karbantartási tevékenységeket.

Az sqlmaint segédprogram 0 értéket ad vissza, ha sikeresen fut, vagy 1-et, ha sikertelen. A hiba a következő esetekben jelentkezik:

  • A karbantartási műveletek bármelyike sikertelen.

  • A -CkDB, -CkDBNoIdx, -CkAl, -CkAlNoIdx, -CkTxtAlvagy -CkCat az ellenőrzések az adatokkal kapcsolatos problémákat találnak.

  • Általános hiba történt.

Engedélyek

Az olvasási és végrehajtási engedéllyel rendelkező Windows-felhasználók sqlmaint.exe végrehajthatják az sqlmaint segédprogramot. Alapértelmezés szerint a(z) sqlmaint.exe a <X>:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER1\MSSQL\Binn mappában van tárolva. Emellett a megadott SQL Server-bejelentkezéshez -login_ID rendelkeznie kell a megadott művelet végrehajtásához szükséges SQL Server-engedélyekkel. Ha Windows-hitelesítéssel csatlakozik az SQL Serverhez, a hitelesített Windows-felhasználóhoz hozzárendelt SQL Server-bejelentkezésnek rendelkeznie kell a megadott művelet végrehajtásához szükséges SQL Server-engedélyekkel.

Például az -BkUpDB utasítás végrehajtásához BACKUP engedélyre van szükség. Az argumentum használatához -UpdOptiStats pedig engedélyre van szükség az UPDATE STATISTICS utasítás végrehajtásához. További információ: Engedélyek (adatbázismotor).

Példák

Egy. DBCC-ellenőrzések végrehajtása adatbázison

Ez a példa egy adatbázison futtat DBCC ellenőrzéseket.

sqlmaint -S MyServer -D AdventureWorks2022 -CkDB -CkAl -CkCat -Rpt C:\MyReports\AdvWks_chk.rpt

B. Statisztikák frissítése

Ez a példa 15% mintával frissíti a statisztikát egy terv összes adatbázisában. A 110 MB-ot elérő adatbázisok zsugorodik, és csak 10% szabad területtel rendelkeznek.

sqlmaint -S MyServer -PlanName MyUserDBPlan -UpdOptiStats 15 -RmUnusedSpace 110 10

C. Az összes adatbázis biztonsági mentése

Ez a példa biztonsági másolatot készít a tervben lévő összes adatbázisról az egyéni alkönyvtárakra az alapértelmezett <X>:\Program Files\Microsoft SQL Server\MSSQLl13.MSSQLSERVER\MSSQL\Backup könyvtár használatával. A két hétnél régebbi biztonsági másolatokat is törli.

sqlmaint -S MyServer -PlanName MyUserDBPlan -BkUpDB -BkUpMedia DISK -UseDefDir -CrBkSubDir -DelBkUps 2weeks

D. Adatbázis biztonsági mentése

Ez a példa egyetlen adatbázisról készít biztonsági másolatot az alapértelmezett <X>:\Program Files\Microsoft SQL Server\MSSQLl13.MSSQLSERVER\MSSQL\Backup könyvtárra.

sqlmaint -S MyServer -BkUpDB -BkUpMedia DISK -UseDefDir