Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:programu SQL Server
Narzędzie sqlmaint wykonuje określony zestaw operacji konserwacji na co najmniej jednej bazie danych. Użyj narzędzia sqlmaint , aby uruchomić DBCC kontrole, utworzyć kopię zapasową bazy danych i jej dziennika transakcji, zaktualizować statystyki i ponownie skompilować indeksy. Wszystkie działania konserwacji bazy danych generują raport, który można wysłać do wyznaczonego pliku tekstowego, pliku HTML lub konta e-mail.
program sqlmaint wykonuje plany konserwacji bazy danych utworzone w poprzednich wersjach programu SQL Server. Aby uruchomić plany konserwacji programu SQL Server z poziomu wiersza polecenia, użyj narzędzia dtexec.
Ważne
Ta funkcja zostanie usunięta w przyszłej wersji programu SQL Server. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji. Zamiast tego użyj funkcji planu konserwacji programu SQL Server. Aby uzyskać więcej informacji na temat planów konserwacji, zobacz Plany konserwacji.
Składnia
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 ]
Argumenty (w programowaniu)
Rozdziel parametry i ich wartości spacją. Na przykład uwzględnij spację między -Si server_name.
-?
Zwraca diagram składni dla sqlmaint. Użyj tego parametru samodzielnie.
-S server_name[\instance_name]
Określa docelowe wystąpienie programu SQL Server. Określ <server_name> , aby nawiązać połączenie z domyślnym wystąpieniem aparatu bazy danych programu SQL Server na tym serwerze. Aby nawiązać połączenie z nazwanym wystąpieniem silnika bazy danych na tym serwerze, określ <server_name>\<instance_name>. Jeśli nie określisz serwera, sqlmaint łączy się z domyślnym wystąpieniem silnika bazy danych na komputerze lokalnym.
-U login_ID
Określa konto, które ma być używane podczas nawiązywania połączenia z serwerem. Jeśli nie podasz tego parametru, sqlmaint próbuje użyć uwierzytelniania systemu Windows. Jeśli login_ID zawiera znaki specjalne, należy je ująć w podwójny cudzysłów ("); w przeciwnym razie znaki podwójnego cudzysłowu są opcjonalne.
Ważne
Jeśli to możliwe, użyj uwierzytelniania systemu Windows.
-P hasło
Określa hasło dla login_ID. Ten parametr jest prawidłowy tylko w przypadku podania parametru -U . Jeśli hasło zawiera znaki specjalne, należy je ująć w podwójny cudzysłów; w przeciwnym razie znaki podwójnego cudzysłowu są opcjonalne.
Ważne
Hasło nie jest maskowane. Jeśli to możliwe, użyj uwierzytelniania systemu Windows.
-D database_name
Określa nazwę bazy danych, w której ma być wykonywana operacja konserwacji. Jeśli database_name zawiera znaki specjalne, należy je ująć w podwójny cudzysłów; w przeciwnym razie znaki podwójnego cudzysłowu są opcjonalne.
-PlanName Nazwa_planu
Określa nazwę planu konserwacji bazy danych zdefiniowanego za pomocą Kreatora planu konserwacji bazy danych. Jedynymi informacjami, których używa sqlmaint z planu, jest lista baz danych w planie. Wszystkie działania konserwacyjne określone w innych parametrach sqlmaint są stosowane do tej listy baz danych.
-Identyfikator GUID planu
Określa globalnie unikatowy identyfikator (GUID) planu konserwacji bazy danych zdefiniowanego za pomocą Kreatora planu konserwacji bazy danych. Jedynymi informacjami używanymi przez narzędzie sqlmaint jest lista baz danych w planie. Wszystkie działania konserwacyjne określone w innych parametrach sqlmaint są stosowane do tej listy baz danych. Ta wartość musi być zgodna z wartością plan_id w elemencie msdb.dbo.sysdbmaintplans.
-Rpt text_file
Określa pełną ścieżkę i nazwę pliku dla wygenerowanego raportu. Raport jest również generowany na ekranie. Raport przechowuje informacje o wersji, dodając datę do nazwy pliku. Data jest zapisywana w następujący sposób: na końcu nazwy pliku, ale przed kropką w formacie _<yyyyMMddhhmm>.
<yyyy> = rok, <MM> = miesiąc, <dd> = dzień, <hh> = godzina, <mm> = minuta.
Jeśli uruchomisz narzędzie o godzinie 10:23 w dniu 1 grudnia 1996 r., to oto wartość text_file.
C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint.rpt
Wygenerowana nazwa pliku to:
C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint_199612011023.rpt
Pełna nazwa pliku Universal Naming Convention (UNC) jest wymagana dla text_file , gdy program sqlmaint uzyskuje dostęp do serwera zdalnego.
-Do operator_name
Określa operator, do którego jest wysyłany wygenerowany raport za pośrednictwem poczty SQL.
-HtmlRpt html_file
Określa pełną ścieżkę i nazwę pliku, do którego jest generowany raport HTML.
narzędzie sqlmaint generuje nazwę pliku, dołączając ciąg formatu _<yyyyMMddhhmm> do nazwy pliku, tak jak w przypadku parametru -Rpt .
Pełna nazwa pliku UNC jest wymagana dla html_file , gdy program sqlmaint uzyskuje dostęp do serwera zdalnego.
-DelHtmlRpt <time_period>
Usuwa dowolny raport HTML w katalogu raportów, jeśli przedział czasu po utworzeniu pliku raportu przekracza time_period.
-DelHtmlRpt szuka plików, których nazwa pasuje do wzorca wygenerowanego na podstawie parametru html_file . Jeśli html_file to C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint.htm, -DelHtmlRpt powoduje, że program sqlmaint usuwa wszystkie pliki, których nazwy są zgodne ze wzorcem C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint*.htm i które są starsze niż określona time_period.
-RmUnusedSpace threshold_percent free_percent
Określa, że nieużywane miejsce jest usuwane z bazy danych określonej w pliku -D. Ta opcja jest przydatna tylko w przypadku baz danych zdefiniowanych do automatycznego zwiększania.
Threshold_percent określa w megabajtach rozmiar, jaki musi osiągnąć baza danych, zanim sqlmaint podejmie próbę usunięcia nieużywanej przestrzeni danych. Jeśli baza danych jest mniejsza niż threshold_percent, nie zostanie podjęta żadna akcja.
Free_percent określa, ile nieużywanego miejsca musi pozostać w bazie danych, określony jako procent końcowego rozmiaru bazy danych.
Jeśli na przykład baza danych o rozmiarze 200 MB zawiera 100 MB danych, określenie wartości 10 dla free_percent spowoduje, że ostateczny rozmiar bazy danych wynosi 110 MB. Baza danych nie jest rozszerzana, jeśli jest mniejsza niż free_percent oraz ilość danych w bazie danych. Na przykład jeśli baza danych o rozmiarze 108 MB ma 100 MB danych, określając 10 dla free_percent nie rozszerza bazy danych na 110 MB; pozostaje na 108 MB.
-CkDB | -CkDBNoIdx
Określa, że instrukcja DBCC CHECKDB lub DBCC CHECKDB instrukcja z NOINDEX opcją jest uruchamiana w bazie danych określonej w -D.
program sqlmaint zapisuje ostrzeżenie do text_file, jeśli baza danych jest używana w momencie jego uruchomienia.
-CkAl | -CkAlNoIdx
Określa, że instrukcja DBCC CHECKALLOC z opcją NOINDEX jest uruchamiana w bazie danych określonej w -D.
-CkCat
Określa, że instrukcja DBCC CHECKCATALOG jest uruchamiana w bazie danych określonej w -D.
-UpdOptiStats sample_percent
Określa, że następująca instrukcja jest uruchamiana w każdej tabeli w bazie danych:
UPDATE STATISTICS table WITH SAMPLE sample_percent PERCENT;
Jeśli tabele zawierają obliczone kolumny, należy również określić argument -SupportedComputedColumn podczas używania -UpdOptiStats.
Aby uzyskać więcej informacji, zobacz UPDATE STATISTICS.
-RebldIdx free_space
Określa, że indeksy w tabelach w docelowej bazie danych powinny zostać odbudowane przy użyciu wartości free_space procent jako odwrotność współczynnika wypełnienia. Jeśli na przykład wartość procentowa free_space wynosi 30, używany współczynnik wypełnienia wynosi 70. Jeśli zostanie określona wartość procentowa free_space 100, indeksy zostaną ponownie skompilowane przy użyciu oryginalnej wartości współczynnika wypełnienia.
Jeśli indeksy znajdują się w kolumnach obliczanych, należy również określić argument -SupportComputedColumn podczas używania -RebldIdx.
-ObsługaKolumnObliczanych
Należy określić, aby uruchamiać polecenia konserwacji za pomocą sqlmaint na kolumnach obliczanych.
-ZapiszHistorię
Określa, że tworzony jest wpis w msdb.dbo.sysdbmaintplan_history dla każdej przeprowadzonej czynności konserwacyjnej wykonywanej przez sqlmaint. Jeśli -PlanName lub -PlanID jest określone, wpisy w sysdbmaintplan_history używają identyfikatora określonego planu. Jeśli -D zostanie określony, wpisy w sysdbmaintplan_history są tworzone zerami jako identyfikator planu.
-BkUpDB [ backup_path ] | -BkUpLog [ backup_path ]
Określa akcję tworzenia kopii zapasowej.
-BkUpDb Wykonuje kopię zapasową całej bazy danych.
-BkUpLog Wykonuje kopię zapasową tylko dziennika transakcji.
backup_path określa katalog kopii zapasowej.
backup_path nie jest konieczne, jeśli -UseDefDir jest również określony, i -UseDefDir zastępuje backup_path , jeśli określono oba te elementy. Kopię zapasową można umieścić w katalogu lub na adresie urządzenia taśmowego (na przykład \\.\TAPE0). Nazwa pliku kopii zapasowej bazy danych jest generowana automatycznie w następujący sposób:
dbname_db_yyyyMMddhhmm.BAK
Where:
-
<dbname>jest nazwą tworzonej kopii zapasowej bazy danych. -
<yyyyMMddhhmm>to czas operacji tworzenia kopii zapasowej z formatem:<yyyy>= rok,<MM>= miesiąc,<dd>= dzień,<hh>= godzina, i<mm>= minuta.
Nazwa pliku kopii zapasowej transakcji jest generowana automatycznie w podobnym formacie:
dbname_log_yyyymmddhhmm.BAK
Jeśli używasz parametru -BkUpDB , musisz również określić nośnik przy użyciu parametru -BkUpMedia .
-BkUpMedia
Określa typ nośnika kopii zapasowej, wybierając między DISK a TAPE.
DISK
Określa, że nośnik kopii zapasowej to dysk.
-DelBkUps <time_period>
W przypadku kopii zapasowych dysków określa, że każdy plik kopii zapasowej w katalogu kopii zapasowej zostanie usunięty, jeśli przedział czasu po utworzeniu kopii zapasowej przekroczy time_period.
-CrBkSubDir
W przypadku kopii zapasowych dysków określa, że podkatalog zostanie utworzony w katalogu backup_path lub w domyślnym katalogu kopii zapasowej, jeśli -UseDefDir jest również określony. Nazwa podkatalogu jest generowana na podstawie nazwy bazy danych określonej w pliku -D.
-CrBkSubDir Oferuje łatwy sposób umieszczania wszystkich kopii zapasowych dla różnych baz danych w oddzielnych podkatalogach bez konieczności zmiany parametru backup_path .
-UseDefDir
W przypadku kopii zapasowych dysków określa, że plik kopii zapasowej zostanie utworzony w domyślnym katalogu kopii zapasowej.
UseDefDir zastępuje backup_path , jeśli określono oba te elementy. W przypadku domyślnej konfiguracji programu SQL Server domyślny katalog kopii zapasowej to C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup.
TAŚMA
Określa, że nośnik kopii zapasowej to taśma.
-BkUpOnlyIfClean
Określa, że kopia zapasowa występuje tylko wtedy, gdy określone -Ck testy nie znajdą problemów z danymi. Akcje konserwacji są uruchamiane w tej samej sekwencji co w wierszu polecenia. Określ parametry -CkDB, -CkDBNoIdx, -CkAl, -CkAlNoIdx, -CkTxtAl lub -CkCat przed parametrami -BkUpDB lub -BkUpLog, jeśli także określasz -BkUpOnlyIfClean. Jeśli nie określisz tych parametrów, zostanie wykonana kopia zapasowa, niezależnie od tego, czy podczas sprawdzania zostaną zgłoszone problemy.
-VrfyBackup
Wskazuje, że RESTORE VERIFYONLY zostanie uruchomiony po zakończeniu tworzenia kopii zapasowej.
number [ minuty| godziny| dzień| tygodnie| miesiące ]
Określa interwał czasu używany do określenia, czy plik raportu lub pliku kopii zapasowej jest wystarczająco stary, aby można było go usunąć. liczba jest liczbą całkowitą, po której (bez spacji) następuje jednostka czasu. Prawidłowe przykłady:
12weeks3months15days
Jeśli określisz tylko liczbę, domyślną częścią daty jest weeks.
Uwagi
Narzędzie sqlmaint wykonuje operacje konserwacji na co najmniej jednej bazie danych. Jeśli określisz -Dparametr , narzędzie wykonuje operacje określone w pozostałych przełącznikach tylko w określonej bazie danych. Jeśli określisz -PlanName lub -PlanID, jedyną informacją, którą narzędzie sqlmaint pobiera z określonego planu konserwacji, jest lista baz danych w tym planie. Wszystkie operacje określone w pozostałych parametrach sqlmaint są stosowane do każdej bazy danych na liście uzyskanej z planu. Narzędzie sqlmaint nie stosuje żadnych działań konserwacji zdefiniowanych w samym planie.
Narzędzie sqlmaint zwraca wartość 0, jeśli działa pomyślnie lub 1, jeśli zakończy się niepowodzeniem. Błąd jest zgłaszany, jeśli:
Każda z akcji konserwacji kończy się niepowodzeniem.
Testy
-CkDB,-CkDBNoIdx,-CkAl,-CkAlNoIdx,-CkTxtAllub-CkCatwyszukują problemy z danymi.Napotkano błąd ogólny.
Uprawnienia
Każdy użytkownik systemu Windows z uprawnieniami Odczyt i Wykonywanie na sqlmaint.exe może wykonać narzędzie sqlmaint. Domyślnie sqlmaint.exe jest przechowywany w folderze <X>:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER1\MSSQL\Binn . Ponadto określony identyfikator logowania -login_ID programu SQL Server musi mieć wymagane uprawnienia do wykonania określonej operacji w programie SQL Server. Jeśli używasz uwierzytelniania systemu Windows do nawiązywania połączenia z programem SQL Server, identyfikator logowania programu SQL Server zamapowany na uwierzytelnionego użytkownika systemu Windows musi mieć uprawnienia programu SQL Server wymagane do wykonania określonej akcji.
Na przykład użycie -BkUpDB wymaga uprawnienia do wykonania instrukcji BACKUP. Użycie argumentu -UpdOptiStats wymaga uprawnień do wykonania instrukcji UPDATE STATISTICS . Aby uzyskać więcej informacji, zobacz Uprawnienia (aparat bazy danych).
Przykłady
Odp. Wykonaj polecenia DBCC w celu sprawdzenia bazy danych
W tym przykładzie są uruchamiane DBCC testy względem bazy danych.
sqlmaint -S MyServer -D AdventureWorks2022 -CkDB -CkAl -CkCat -Rpt C:\MyReports\AdvWks_chk.rpt
B. Aktualizowanie statystyk
W tym przykładzie statystyki są aktualizowane przy użyciu próby 15% we wszystkich bazach danych w planie. Każda baza danych, która osiąga 110 MB, ma tylko 10% wolnego miejsca.
sqlmaint -S MyServer -PlanName MyUserDBPlan -UpdOptiStats 15 -RmUnusedSpace 110 10
C. Tworzenie kopii zapasowych wszystkich baz danych
W tym przykładzie utworzono kopię zapasową wszystkich baz danych w planie dla poszczególnych podkatalogów przy użyciu katalogu domyślnego <X>:\Program Files\Microsoft SQL Server\MSSQLl13.MSSQLSERVER\MSSQL\Backup . Usuwa również wszystkie kopie zapasowe starsze niż dwa tygodnie.
sqlmaint -S MyServer -PlanName MyUserDBPlan -BkUpDB -BkUpMedia DISK -UseDefDir -CrBkSubDir -DelBkUps 2weeks
D. Tworzenie kopii zapasowej bazy danych
W tym przykładzie utworzono kopię zapasową pojedynczej bazy danych w katalogu domyślnym <X>:\Program Files\Microsoft SQL Server\MSSQLl13.MSSQLSERVER\MSSQL\Backup .
sqlmaint -S MyServer -BkUpDB -BkUpMedia DISK -UseDefDir