Batch Script az SQL Server adatbázis karbantartásához
A biztonsági másolatok készítése mellett az SQL Server különböző feladatokkal és funkciókkal rendelkezik, amelyek javíthatják az adatbázisok teljesítményét és megbízhatóságát. Korábban megmutattuk, hogyan kell menteni az SQL Server adatbázisokat egy egyszerű parancssori szkripttel, így ugyanolyan módon biztosítunk egy olyan parancsfájlt, amely lehetővé teszi, hogy könnyen elvégezhesse a szokásos karbantartási feladatokat.
Adatbázis tömörítése / csökkentése [/ Compact]
Számos tényező járul hozzá a fizikai lemezterülethez, amelyet az SQL Server adatbázis használ. Csak hogy néhányat említsünk:
- Idővel a rekordok hozzáadásával, törlésével és frissítésével az SQL folyamatosan növekszik és csökkenti a táblázatokat, valamint ideiglenes adatszerkezeteket generál a lekérdezési manipulációk végrehajtásához. Annak érdekében, hogy az adatbázis-kiszolgáló igényeit kielégítse, az SQL Server szükség szerint növeli az adatbázis méretét (általában 10% -kal), így az adatbázis fájlmérete nem változik folyamatosan. Bár ez ideális a teljesítményhez, a tárolóterületet megszakíthatja, mert ha például egy nagyon sok rekordot ad hozzá, ami az adatbázis növekedéséhez vezet, és ezt követően törli ezeket az adatokat, az SQL Server nem fogja automatikusan visszaszerezni ezt lemez terület.
- Ha teljes helyreállítási módot használ az adatbázisaiban, a tranzakciós naplófájl (LDF) meglehetősen nagy lehet, különösen olyan adatbázisokban, amelyek nagy mennyiségű frissítést tartalmaznak.
Az adatbázis tömörítése (vagy zsugorodása) visszanyeri a fel nem használt lemezterületet. Kis adatbázisok esetén (200 MB vagy annál kisebb) ez általában nem lesz túl sok, de nagy adatbázisok esetén (1 GB vagy annál nagyobb) a visszanyert tér jelentős lehet..
Adatbázis újraindítása [/ Reindex]
Hasonlóan a fájlok folyamatos létrehozásához, szerkesztéséhez és törléséhez, a lemezek töredezettségéhez vezethet, az adatbázisban lévő rekordok beillesztése, frissítése és törlése a táblázat töredezettségéhez vezethet. A gyakorlati eredmények megegyeznek abban, hogy az olvasási és írási műveletek teljesítményt elérnek. Bár nem tökéletes analógia, az adatbázisok újbóli feltérképezése alapvetően defragmentálja őket. Egyes esetekben ez jelentősen növelheti az adatgyűjtés sebességét.
Az SQL Server működésének köszönhetően a táblákat egyedileg kell újraindítani. A nagyszámú táblázattal rendelkező adatbázisok esetében ez igazi fájdalom lehet manuálisan, de a parancsfájl minden egyes táblázatot eltalál a megfelelő adatbázisban, és újraképíti az összes indexet.
Az integritás ellenőrzése [/ Verify]
Annak érdekében, hogy az adatbázis mind funkcionális maradjon, mind pedig pontos eredményeket hozzon létre, számos integritási elemnek kell lennie a helyén. Szerencsére a fizikai és / vagy logikai integritási problémák nem túl gyakoriak, de helyes gyakorlat, hogy időnként futtassa az integritás-ellenőrzési folyamatot az adatbázisaiban, és vizsgálja felül az eredményeket.
Amikor az ellenőrzési folyamat fut át a szkriptünkön, csak hibákat jelentenek, így nem hír a jó hír.
A Script használata
Az SQLMaint kötegelt parancsfájl kompatibilis az SQL 2005-ös és újabb verzióval, és olyan gépen kell futtatni, amelyen az SQLCMD eszköz telepítve van (az SQL Server telepítésének részeként telepítve van). Javasoljuk, hogy ezt a szkriptet a Windows PATH változójában (például C: Windows) beállított helyre helyezze el, így a parancssorból könnyen hívható, mint bármely más alkalmazás..
A súgó információk megtekintéséhez egyszerűen írja be:
SQLMaint /?
Példák
Kompakt, majd egy hitelesített kapcsolat segítségével ellenőrizze a MyDB adatbázist:
SQLMaint MyDB / Kompakt / Ellenőrizze
Reindex futtatásához, majd a „MyDB” -re tömörítve a „Special” nevű példányon, a „sa” felhasználóval a „123456” jelszóval:
SQLMaint MyDB /S:.Special / U: sa / P: 123456 / Reindex / Compact
A Batch Script használatával
Míg az SQLMaint kötegelt parancsfájl használható egy alkalmazásként a parancssorból, amikor egy másik kötegfájl belsejében használja, előbb a CALL kulcsszóval kell rendelkeznie.
Például ez a parancsfájl minden nem rendszeradatbázis-karbantartási feladatot fut egy alapértelmezett SQL Server telepítésen, amely megbízható hitelesítést használ:
@ECHO KI
SETLOCAL EnableExtensions
SET DBList = ”% TEMP% DBList.txt”
SqlCmd -E -h-1 -w 300 -Q “SET NoCount BE; SELECT Name OF master.dbo.sysDatabases WHERE Név nem IN ('master', 'modell', 'msdb', 'tempdb') ">% DBList%
FOR / F „usebackq tokens = 1” %% i IN (% DBList%) DO (
CALL SQLMaint “%% i” / Compact / Reindex / Verify
VISSZHANG +++++++++++
)
HA EXIST% DBList% DEL / F / Q% DBList%
ENDLOCAL
Töltse le az SQLMaint Batch Script-et SysadminGeek.com-ból