Startseite » wie man » Batch-Skript zur Vereinfachung der SQL Server-Datenbankwartung

    Batch-Skript zur Vereinfachung der SQL Server-Datenbankwartung

    Neben dem Erstellen von Sicherungen gibt es eine Vielzahl von Aufgaben und Funktionen, die SQL Server zur Verfügung stellt, wodurch sowohl die Leistung als auch die Zuverlässigkeit Ihrer Datenbanken verbessert werden können. Wir haben Ihnen bereits gezeigt, wie Sie ein Backup von SQL Server-Datenbanken mit einem einfachen Befehlszeilenskript erstellen. Auf dieselbe Weise stellen wir ein Skript zur Verfügung, mit dem Sie allgemeine Wartungsaufgaben problemlos ausführen können.

    Komprimieren / Verkleinern einer Datenbank [/ Compact]

    Es gibt mehrere Faktoren, die zum physischen Speicherplatz einer SQL Server-Datenbank beitragen. Nur um ein paar zu nennen:

    • Im Laufe der Zeit, wenn Datensätze hinzugefügt, gelöscht und aktualisiert werden, vergrößert und verkleinert SQL ständig die Tabellen und generiert temporäre Datenstrukturen für die Bearbeitung von Abfragen. SQL Server erhöht die Datenbankgröße (normalerweise um 10%), um die Festplattenspeicheranforderungen zu erfüllen, sodass sich die Datenbankdateigröße nicht ständig ändert. Dies ist zwar ideal für die Leistung, kann aber dazu führen, dass die Verbindung zum verwendeten Speicherplatz getrennt wird. Wenn Sie beispielsweise eine sehr große Anzahl von Datensätzen hinzufügen, die die Datenbank vergrößert und diese Datensätze anschließend löscht, wird dies von SQL Server nicht automatisch zurückgefordert Festplattenplatz.
    • Wenn Sie den vollständigen Wiederherstellungsmodus für Ihre Datenbanken verwenden, kann die Transaktionsprotokolldatei (LDF) sehr groß werden, insbesondere bei Datenbanken mit einer großen Anzahl von Aktualisierungen.

    Durch das Komprimieren (oder Verkleinern) der Datenbank wird nicht genutzter Speicherplatz freigegeben. Bei kleinen Datenbanken (200 MB oder weniger) ist dies normalerweise nicht sehr hoch, bei großen Datenbanken (1 GB oder mehr) ist der wiederhergestellte Speicherplatz jedoch möglicherweise erheblich.

    Eine Datenbank erneut indizieren [/ Reindex]

    So wie das ständige Erstellen, Bearbeiten und Löschen von Dateien zu einer Fragmentierung der Festplatte führen kann, kann das Einfügen, Aktualisieren und Löschen von Datensätzen in einer Datenbank zu einer Fragmentierung der Tabelle führen. Die praktischen Ergebnisse sind die gleichen, da die Lese- und Schreiboperationen einen Leistungsverlust erfahren. Obwohl dies keine perfekte Analogie ist, defragmentiert sie die Tabellen in einer Datenbank. In einigen Fällen kann dies die Geschwindigkeit des Datenabrufs erheblich erhöhen.

    Aufgrund der Funktionsweise von SQL Server müssen Tabellen einzeln neu indiziert werden. Bei Datenbanken mit einer großen Anzahl von Tabellen kann dies manuell schwierig sein. Unser Skript trifft jedoch auf jede Tabelle in der jeweiligen Datenbank und erstellt alle Indizes neu.

    Integrität überprüfen [/ Verify]

    Damit eine Datenbank sowohl funktionsfähig bleibt als auch genaue Ergebnisse liefert, müssen zahlreiche Integritätselemente vorhanden sein. Zum Glück sind physische und / oder logische Integritätsprobleme nicht sehr häufig, aber es ist ratsam, gelegentlich den Integritätsüberprüfungsprozess in Ihren Datenbanken auszuführen und die Ergebnisse zu überprüfen.

    Wenn der Überprüfungsprozess durch unser Skript ausgeführt wird, werden nur Fehler gemeldet, sodass keine Nachricht eine gute Nachricht ist.

    Verwendung des Skripts

    Das SQLMaint-Stapelskript ist mit SQL 2005 und höher kompatibel und muss auf einem Computer ausgeführt werden, auf dem das SQLCMD-Tool installiert ist (als Teil der SQL Server-Installation installiert). Es wird empfohlen, dieses Skript an einem Speicherort abzulegen, der in Ihrer Windows-PATH-Variablen (d. H. C: Windows) festgelegt ist, so dass es leicht wie jede andere Anwendung von der Befehlszeile aus aufgerufen werden kann.

    Um die Hilfeinformationen anzuzeigen, geben Sie einfach Folgendes ein:

    SQLMaint /?

    Beispiele

    So führen Sie eine Kompaktdatei aus und überprüfen dann die Datenbank "MyDB" mithilfe einer vertrauenswürdigen Verbindung:

    SQLMaint MyDB / Compact / Verify

    So führen Sie eine Neuindizierung aus und komprimieren dann unter "MyDB" in der genannten Instanz "Special" mit dem Benutzer "sa" mit dem Kennwort "123456":

    SQLMaint MyDB /S:.Special / U: sa / P: 123456 / Reindex / Compact

    Verwendung innerhalb eines Batch-Skripts

    Das SQLMaint-Batch-Skript kann wie eine Anwendung von der Befehlszeile aus verwendet werden. Wenn Sie es in einem anderen Batch-Skript verwenden, muss ihm das Schlüsselwort CALL vorangestellt werden.

    Dieses Skript führt beispielsweise alle Wartungstasks für jede Nicht-Systemdatenbank in einer Standardinstallation von SQL Server mit vertrauenswürdiger Authentifizierung aus:

    @ECHO OFF
    SETLOCAL EnableExtensions
    SET DBList = "% TEMP% DBList.txt"
    SqlCmd -E -h-1 -w 300 -Q “Set NoCount ON; SELECT Name FROM master.dbo.sysDatabases WHERE Name nicht IN ('master', 'model', 'msdb', 'tempdb') ">% DBList%
    FOR / F "usebackq tokens = 1" %% i IN (% DBList%) DO (
    CALL SQLMaint „%% i“ / Compact / Reindex / Verify
    ECHO +++++++++++
    )
    WENN EXIST% DBList% DEL / F / Q% DBList%
    ENDLOCAL

    Laden Sie das SQLMaint-Batch-Skript von SysadminGeek.com herunter