(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original
Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

sqlmaint (Hilfsprogramm)

Dassqlmaint-Hilfsprogramm führt angegebene Wartungsvorgänge für eine oder mehrere Datenbanken aus. Verwenden Sie sqlmaint , um DBCC-Überprüfungen auszuführen, eine Datenbank und das zugehörige Transaktionsprotokoll zu sichern, Statistiken zu aktualisieren und Indizes neu zu erstellen. Bei allen Datenbankwartungsaktivitäten wird ein Bericht generiert, der an eine festgelegte Textdatei, HTML-Datei oder ein festgelegtes E-Mail-Konto gesendet werden kann. sqlmaint führt Datenbankwartungspläne aus, die in früheren Versionen von SQL Server erstellt wurden. Verwenden Sie dtexec (Hilfsprogramm), um Wartungspläne von SQL Server über die Eingabeaufforderung auszuführen.

Wichtiger Hinweis Wichtig

Diese Funktion wird in der nächsten Version von Microsoft SQL Server entfernt. Verwenden Sie diese Funktion beim Entwickeln neuer Anwendungen nicht, und planen Sie das Ändern von Anwendungen, in denen es zurzeit verwendet wird. Verwenden Sie stattdessen die Wartungsplanfunktion von SQL Server. Weitere Informationen zu Wartungsplänen finden Sie unter Wartungspläne.

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]

Die Parameter und ihre Werte müssen jeweils durch ein Leerzeichen getrennt werden. So muss beispielsweise zwischen -S und server_name ein Leerzeichen stehen.

-?

Gibt an, dass das Syntaxdiagramm für sqlmaint zurückgegeben werden soll. Dieser Parameter darf nur alleine verwendet werden.

-S server_name[ \instance_name]

Gibt die Microsoft SQL Server-Zielinstanz an. Geben Sie server_name an, um eine Verbindung mit der Standardinstanz von SQL Server Database Engine (Datenbankmodul) auf diesem Server herzustellen. Geben Sie server_name\instance_name an, um eine Verbindung mit einer benannten Instanz von Database Engine (Datenbankmodul) auf diesem Server herzustellen. Wenn kein Server angegeben wird, stellt sqlmaint eine Verbindung mit der Standardinstanz von Database Engine (Datenbankmodul) auf dem lokalen Computer her.

-U login_ID

Gibt die Anmelde-ID an, der beim Verbinden zum Server verwendet werden soll. Wenn dieses Argument nicht angegeben wird, versucht sqlmaint, die Microsoft Windows-Authentifizierung zu verwenden. Wenn login_ID Sonderzeichen enthält, muss das Argument in doppelte Anführungszeichen (") eingeschlossen werden. Andernfalls sind die doppelten Anführungszeichen optional.

Sicherheitshinweis Sicherheitshinweis

Verwenden Sie nach Möglichkeit die Windows-Authentifizierung.

-P password

Gibt das Kennwort für die Anmelde-ID an. Nur gültig, wenn der -U-Parameter ebenfalls angegeben wird. Wenn password Sonderzeichen enthält, muss das Argument in doppelte Anführungszeichen eingeschlossen werden. Andernfalls sind die doppelten Anführungszeichen optional.

Sicherheitshinweis Sicherheitshinweis

Das Kennwort wird nicht maskiert. Verwenden Sie nach Möglichkeit die Windows-Authentifizierung.

-D database_name

Gibt den Namen der Datenbank an, in der der Wartungsvorgang durchgeführt werden soll. Wenn database_name Sonderzeichen enthält, muss das Argument in doppelte Anführungszeichen eingeschlossen werden. Andernfalls sind die doppelten Anführungszeichen optional.

-PlanName name

Gibt den Namen eines Datenbank-Wartungsplans an, der mithilfe des Datenbank-Wartungsplanungs-Assistenten definiert wurde. Von den Informationen, die dieser Plan enthält, verwendet sqlmaint nur die Liste der Datenbanken im Plan. Alle Wartungsaktivitäten, die Sie in den anderen sqlmaint-Parametern angeben, werden auf die in dieser Liste aufgeführten Datenbanken angewendet.

-PlanID guid

Gibt einen global eindeutigen Bezeichner (Globally Unique Identifier, GUID) eines Datenbank-Wartungsplans an, der mithilfe des Datenbank-Wartungsplanungs-Assistenten definiert wurde. Von den Informationen, die dieser Plan enthält, verwendet sqlmaint nur die Liste der Datenbanken im Plan. Alle Wartungsaktivitäten, die Sie in den anderen sqlmaint-Parametern angeben, werden auf die in dieser Liste aufgeführten Datenbanken angewendet. Dies muss mit einem plan_id-Wert in msdb.dbo.sysdbmaintplans übereinstimmen.

-Rpt text_file

Gibt den vollständigen Pfad und Namen der Datei an, in der der Bericht generiert werden soll. Der Bericht wird auch auf dem Bildschirm generiert. Der Bericht verwaltet Versionsinformationen, indem er das Datum zum Dateinamen hinzufügt. Das Datum wird folgendermaßen generiert: am Ende des Dateinamens, aber vor dem Punkt im Format _yyyyMMddhhmm. yyyy = Jahr, MM = Monat, dd = Tag, hh = Stunde, mm = Minute.

Wenn Sie das Hilfsprogramm am 1. Dezember 1996 um 10:23 Uhr ausführen und dies der text_file-Wert ist:

c:\Program Files\Microsoft SQL Server\Mssql\Backup\AdventureWorks2012_maint.rpt

Die generierte Datei hat dann folgenden Namen:

c:\Program Files\Microsoft SQL Server\Mssql\Backup\AdventureWorks2012_maint_199612011023.rpt

Wenn sqlmaint auf einen Remoteserver zugreift, ist für text_file der vollständige UNC-Dateiname (Universal Naming Convention) erforderlich.

-To operator_name

Gibt den Operator an, an den der generierte Bericht über SQL Mail gesendet wird.

-HtmlRpt html_file

Gibt den vollständigen Pfad und Namen der Datei an, in der der HTML-Bericht generiert werden soll. sqlmaint generiert den Dateinamen, indem eine Zeichenfolge im Format _yyyyMMddhhmm an den Dateinamen angefügt wird, ebenso wie beim -Rpt-Parameter.

Wenn sqlmaint auf einen Remoteserver zugreift, ist für html_file der vollständige UNC-Dateiname erforderlich.

-DelHtmlRpt <time_period>

Gibt an, dass jeder HTML-Bericht im Berichtsverzeichnis gelöscht werden soll, wenn das Zeitintervall nach Erstellen der Berichtsdatei den Wert für <time_period> überschreitet. -DelHtmlRpt sucht nach Dateien, deren Namen dem Muster entsprechen, das aus dem html_file-Parameter generiert wurde. Wenn html_file z. B. der Datei C:\Programme\Microsoft SQL Server\Mssql\Backup\AdventureWorks2012_maint.htm entspricht, bewirkt -DelHtmlRpt, dass sqlmaint alle Dateien löscht, deren Namen dem Muster C:\Programme\Microsoft SQL Server\Mssql\Backup\AdventureWorks2012_maint.htm*.htm entsprechen und die älter als der angegebene Wert für <time_period> sind.

-RmUnusedSpace threshold_percent free_percent

Gibt an, dass nicht verwendeter Speicherplatz aus der mit -D angegebenen Datenbank entfernt wird. Diese Option ist nur für Datenbanken nützlich, die für das automatische Wachstum definiert wurden. Threshold_percent gibt die Größe in Megabyte an, die die Datenbank erreichen muss, bevor sqlmaint versucht, nicht verwendeten Datenspeicherplatz zu entfernen. Wenn die Datenbank kleiner als der threshold_percent ist, wird keine Aktion ausgeführt. Free_percent gibt an, wie viel nicht verwendeter Speicherplatz in der Datenbank verbleiben muss. Die Angabe erfolgt als Prozentsatz der endgültigen Größe der Datenbank. Wenn eine 200 MB große Datenbank z. B. 100 MB an Daten enthält, bewirkt die Angabe des Werts 10 für free_percent, dass die endgültige Größe der Datenbank 110 MB beträgt. Beachten Sie, dass eine Datenbank nicht erweitert wird, wenn sie kleiner als der Wert ist, der sich aus free_percent zuzüglich der Menge der Daten in der Datenbank ergibt. Wenn eine 108 MB große Datenbank z. B. 100 MB an Daten enthält, bewirkt die Angabe des Werts 10 für free_percent nicht, dass die Datenbank auf 110 MB erweitert wird; die Datenbank bleibt 108 MB groß.

-CkDB | -CkDBNoIdx

Gibt an, dass eine DBCC CHECKDB-Anweisung oder eine DBCC CHECKDB-Anweisung mit der Option NOINDEX in der Datenbank ausgeführt werden soll, die mit -D angegeben wurde. Weitere Informationen finden Sie unter DBCC CHECKDB.

Wenn die Datenbank zum Zeitpunkt der Ausführung von sqlmaint verwendet wird, wird eine Warnung in die Datei geschrieben, die mit text_file angegeben wurde.

-CkAl | -CkAlNoIdx

Gibt an, dass eine DBCC CHECKALLOC-Anweisung mit der Option NOINDEX in der Datenbank ausgeführt werden soll, die mit -D angegeben wurde. Weitere Informationen finden Sie unter DBCC CHECKALLOC (Transact-SQL).

-CkCat

Gibt an, dass eine DBCC CHECKCATALOG-Anweisung (Transact-SQL) in der Datenbank ausgeführt werden soll, die mit -D angegeben wurde. Weitere Informationen finden Sie unter DBCC CHECKCATALOG (Transact-SQL).

-UpdOptiStats sample_percent

Gibt an, dass für jede Tabelle der Datenbank die folgende Anweisung ausgeführt werden soll:

UPDATE STATISTICS table WITH SAMPLE sample_percent PERCENT;

Falls die Tabelle berechnete Spalten enthält, müssen Sie auch das -SupportedComputedColumn-Argument angeben, wenn Sie -UpdOptiStats verwenden.

Weitere Informationen finden Sie unter UPDATE STATISTICS (Transact-SQL).

-RebldIdx free_space

Gibt an, dass die Indizes der Tabellen in der Zieldatenbank neu erstellt werden sollen, wobei der Umkehrwert des Prozentwerts in free_space als Füllfaktor verwendet wird. Wenn der free_space-Prozentsatz z. B. 30 beträgt, dann ist der verwendete Füllfaktor 70. Wenn z. B. free_space dem Prozentwert 100 entspricht, werden die Indizes mit dem ursprünglichen Füllfaktorwert neu erstellt.

Falls die Indizes für berechnete Spalten erstellt wurden, müssen Sie zudem das -SupportComputedColumn-Argument angeben, wenn Sie -RebldIdx verwenden.

-SupportComputedColumn

Muss angegeben werden, um DBCC-Wartungsbefehle mit sqlmaint für berechnete Spalten auszuführen.

-WriteHistory

Gibt an, dass für jede von sqlmaint ausgeführte Wartungsaktion ein Eintrag in msdb.dbo.sysdbmaintplan_history vorgenommen wird. Wenn -PlanName oder -PlanID angegeben ist, wird für die Einträge in sysdbmaintplan_history die ID des angegebenen Plans verwendet. Wenn -D angegeben ist, werden in den Einträgen in sysdbmaintplan_history für die Plan-ID Nullen verwendet.

-BkUpDB [ backup_path] | -BkUpLog [ backup_path ]

Gibt eine Sicherungsaktion an. -BkUpDb sichert die gesamte Datenbank. -BkUpLog sichert nur das Transaktionsprotokoll.

backup_path gibt das Verzeichnis für die Sicherung an. backup_path wird nicht benötigt, wenn auch -UseDefDir angegeben wird, und wird von -UseDefDir überschrieben, wenn beide angegeben werden. Die Sicherung kann in einem Verzeichnis oder über eine Bandmediumadresse erfolgen (z. B. \\. \TAPE0). Der Dateiname für eine Datenbanksicherung wird automatisch folgendermaßen generiert:

dbname_db_yyyyMMddhhmm.BAK

Dabei gilt:

  • dbname ist der Name der Datenbank, die gesichert werden soll.

  • yyyyMMddhhmm ist der Zeitpunkt des Sicherungsvorgangs, wobei yyyy = Jahr, MM = Monat, dd = Tag, hh = Stunde und mm = Minute.

Der Dateiname für eine Transaktionssicherung wird automatisch in einem ähnlichen Format generiert:

dbname_log_yyyymmddhhmm.BAK

Wenn Sie den -BkUpDB-Parameter verwenden, müssen Sie mithilfe des -BkUpMedia-Parameters auch das Medium angeben.

-BkUpMedia

Gibt den Medientyp der Sicherung an, entweder DISK oder TAPE.

DISK

Gibt an, dass das Sicherungsmedium ein Datenträger ist.

-DelBkUps< time_period >

Gibt bei Datenträgersicherungen an, dass jede Sicherungsdatei im Sicherungsverzeichnis gelöscht werden soll, wenn das Zeitintervall nach Erstellen der Sicherungsdatei den Wert für <time_period> überschreitet.

-CrBkSubDir

Gibt bei Datenträgersicherungen an, dass ein Unterverzeichnis im Verzeichnis [backup_path] oder im Standardsicherungsverzeichnis erstellt werden soll, wenn -UseDefDir ebenfalls angegeben ist. Der Name des Unterverzeichnisses wird anhand des Datenbanknamens generiert, der mit -D angegeben wurde. -CrBkSubDir bietet ein einfaches Verfahren, um alle Sicherungen für verschiedene Datenbanken in unterschiedlichen Unterverzeichnissen abzulegen, ohne den backup_path-Parameter ändern zu müssen.

-UseDefDir

Gibt für Datenträgersicherungen an, dass die Sicherungsdatei im Standardsicherungsverzeichnis erstellt werden soll. UseDefDir überschreibt backup_path, wenn beide Parameter angegeben werden. Bei einer Standardinstallation von Microsoft SQL Server ist C:\Programme\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup das Standardsicherungsverzeichnis.

TAPE

Gibt an, dass das Sicherungsmedium ein Band ist.

-BkUpOnlyIfClean

Gibt an, dass eine Sicherung nur dann erfolgt, wenn bei den mit -Ck angegebenen Überprüfungen keine Probleme bei den Daten gefunden wurden. Wartungsaktionen werden in derselben Reihenfolge ausgeführt, in der sie an der Eingabeaufforderung angezeigt werden. Geben Sie die Parameter -CkDB, -CkDBNoIdx, -CkAl, -CkAlNoIdx, -CkTxtAl oder -CkCat vor dem oder den -BkUpDB/-BkUpLog-Parametern an, wenn Sie auch -BkUpOnlyIfClean angeben möchten. Andernfalls erfolgt die Sicherung unabhängig davon, ob bei der Überprüfung Probleme gemeldet werden.

-VrfyBackup

Gibt an, dass für die Sicherung RESTORE VERIFYONLY ausgeführt wird, sobald die Sicherung abgeschlossen ist.

number[minutes| hours| day| weeks| months]

Gibt das Zeitintervall an, das verwendet wurde, um zu bestimmen, ob ein Bericht oder eine Sicherungsdatei alt genug ist, um gelöscht zu werden. number ist eine ganze Zahl, gefolgt von einer Einheit der Zeit (ohne Leerzeichen). Gültige Beispiele:

  • 12weeks

  • 3months

  • 15days

Wenn nur number angegeben ist, wird das Datumsteil in Wochen angegeben.

Das Hilfsprogramm sqlmaint führt Wartungsvorgänge für eine oder mehrere Datenbanken aus. Wenn -D angegeben wird, werden die Vorgänge, die mit den verbleibenden Schaltern angegeben werden, nur für die angegebene Datenbank ausgeführt. Wenn -PlanName oder -PlanID angegeben wird, ruft sqlmaint aus dem angegebenen Wartungsplan nur die Liste der Datenbanken im Plan ab. Alle in den verbleibenden sqlmaint-Parametern angegebenen Vorgänge werden für jede Datenbank in der Liste ausgeführt, die aus dem Plan abgerufen wurde. Das Hilfsprogramm sqlmaint wendet keine der im Plan selbst definierten Wartungsaktivitäten an.

Das Hilfsprogramm sqlmaint gibt 0 bei erfolgreicher Ausführung und 1 bei Auftreten eines Fehlers zurück. Ein Fehler wird in folgenden Fällen gemeldet:

  • Eine Wartungsaktion ist fehlgeschlagen.

  • Überprüfungen mithilfe von -CkDB, -CkDBNoIdx, -CkAl, -CkAlNoIdx, -CkTxtAl oder -CkCat ermitteln Probleme bei den Daten.

  • Ein allgemeiner Fehler ist aufgetreten.

Das sqlmaint-Hilfsprogramm kann von jedem Windows-Benutzer ausgeführt werden, der über die Berechtigung Lesen und Ausführen für die Datei sqlmaint.exe verfügt, die standardmäßig im Ordner x:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER1\MSSQL\Binn gespeichert ist. Darüber hinaus muss der mit -login_ID angegebene SQL Server-Anmeldename über die SQL Server-Berechtigungen verfügen, die zum Ausführen der jeweiligen Aktion erforderlich sind. Wird bei der Verbindung zu SQL Server die Windows-Authentifizierung verwendet, muss der dem authentifizierten Windows-Benutzer zugeordnete SQL Server-Anmeldename über die SQL Server-Berechtigungen zum Ausführen der jeweiligen Aktion verfügen.

Beispielsweise erfordert die Verwendung von -BkUpDB die Berechtigung zum Ausführen der BACKUP-Anweisung. Und die Verwendung des -UpdOptiStats-Arguments erfordert die Berechtigung zum Ausführen der UPDATE STATISTICS-Anweisung. Weitere Informationen finden Sie in den Abschnitten zu Berechtigungen in den entsprechenden Themen der Onlinedokumentation.

A.Ausführen von DBCC-Überprüfungen für eine Datenbank

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

B.Aktualisieren von Statistiken in allen Datenbanken in einem Plan mithilfe einer Stichprobe von 15 %.Weiterhin: Verkleinern aller Datenbanken, die eine Größe von 110 MB erreicht haben, sodass sie anschließend nur noch 10 % freien Speicherplatz aufweisen

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

C.Sichern aller Datenbanken in einem Plan in ihren jeweiligen Unterverzeichnissen im Standardverzeichnis "x:\Programme\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup".Weiterhin: Löschen aller Sicherungen, die älter als 2 Wochen sind

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

D.Sichern einer Datenbank im Standardverzeichnis "x:\Programme\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup".\

sqlmaint -S MyServer -BkUpDB -BkUpMedia DISK -UseDefDir
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Vielen Dank für Ihr Feedback.

Community-Beiträge

HINZUFÜGEN
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2014 Microsoft. Alle Rechte vorbehalten.