Udostępnij za pośrednictwem


Narzędzie sqlmaint

Dotyczy:programu SQL Server

Narzędziesqlmaint wykonuje określony zestaw operacji konserwacji na co najmniej jednej bazie danych. Użyj narzędzia sqlmaint , aby uruchomić kontrole DBCC, 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 przy użyciu poprzednich wersji 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)

Parametry i ich wartości muszą być oddzielone spacją. Na przykład między -S a server_name musi istnieć spacja.

-?
Określa, że zwracany jest diagram składni dla sqlmaint. Ten parametr musi być używany samodzielnie.

-Sserver_name[ \instance_name]
Określa docelowe wystąpienie programu Microsoft SQL Server. Określ server_name w celu nawiązania połączenia z domyślnym wystąpieniem silnika bazy danych SQL Server na tym serwerze. Określ server_name\instance_name, aby połączyć się z nazwanym wystąpieniem aparatu bazy danych na tym serwerze. Jeśli serwer nie zostanie określony, program sqlmaint łączy się z domyślnym wystąpieniem aparatu bazy danych na komputerze lokalnym.

-Ulogin_ID
Określa identyfikator logowania, który ma być używany podczas nawiązywania połączenia z serwerem. Jeśli nie podano, program sqlmaint próbuje użyć uwierzytelniania systemu Microsoft Windows. Jeśli login_ID zawiera znaki specjalne, musi być ujęta w znaki podwójnego cudzysłowu ("); w przeciwnym razie znaki podwójnego cudzysłowu są opcjonalne.

Ważne

Jeśli to możliwe, użyj uwierzytelniania systemu Windows.

-Phasło
Określa hasło identyfikatora logowania. Prawidłowe tylko wtedy, gdy podano również parametr -U . Jeśli hasło zawiera znaki specjalne, musi być ujęte w znaki podwójnego cudzysłowu; 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.

-Ddatabase_name
Określa nazwę bazy danych, w której ma być wykonywana operacja konserwacji. Jeśli database_name zawiera znaki specjalne, musi być ujęta w znaki podwójnego cudzysłowu; w przeciwnym razie znaki podwójnego cudzysłowu są opcjonalne.

-Nazwa_planuname
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, 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. Musi to być zgodne z wartością plan_id w pliku msdb.dbo.sysdbmaintplans.

-Rpttext_file
Określa pełną ścieżkę i nazwę pliku, do którego ma zostać wygenerowany raport. Raport jest również generowany na ekranie. Raport przechowuje informacje o wersji, dodając datę do nazwy pliku. Data jest tworzona w następujący sposób: na końcu nazwy pliku, ale przed kropką, w postaci _yyyyMMddhhmm. rrrr = 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.

-Dooperator_name
Określa operator, do którego jest wysyłany wygenerowany raport za pośrednictwem poczty SQL.

-HtmlRpthtml_file
Określa pełną ścieżkę i nazwę pliku, do którego ma zostać wygenerowany raport HTML. program sqlmaint generuje nazwę pliku, dołączając ciąg formatu _yyyyMmdhmm do nazwy pliku, podobnie 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<okres_czasu>
Określa, że każdy raport HTML w katalogu raportów należy usunąć, jeśli interwał 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 jest c:\Program Files\Microsoft SQL Server\Mssql\Backup\AdventureWorks2022_maint.htm, to -DelHtmlRpt powoduje, że 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>.

-RmUnusedSpacethreshold_percent free_percent
Określa, że nieużywane miejsce należy usunąć z bazy danych określonej w -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. Należy pamiętać, że 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 instrukcja DBCC CHECKDB z opcją NOINDEX należy uruchomić w bazie danych określonej w -D. Aby uzyskać więcej informacji, zobacz DBCC CHECKDB.

Ostrzeżenie jest zapisywane w text_file , jeśli baza danych jest używana podczas uruchamiania narzędzia sqlmaint .

-CkAl | -CkAlNoIdx
Określa, że instrukcja DBCC CHECKALLOC z opcją NOINDEX należy uruchomić w bazie danych określonej w -D. Aby uzyskać więcej informacji, zobacz DBCC CHECKALLOC (Transact-SQL).

-CkCat
Określa, że instrukcja DBCC CHECKCATALOG (Transact-SQL) musi być uruchamiana w bazie danych określonej w -D. Aby uzyskać więcej informacji, zobacz DBCC CHECKCATALOG (Transact-SQL).

-UpdOptiStatsprocent_próbki
Określa, że dla każdej tabeli w bazie danych należy uruchomić następującą instrukcję:

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 parametru -UpdOptiStats.

Aby uzyskać więcej informacji, zobacz UPDATE STATISTICS (Transact-SQL).

-RebldIdxwolna_przestrzeń
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ługaObliczanegoWiersza
Musi być określone, aby uruchamiać polecenia konserwacji DBCC za pomocą sqlmaint w kolumnach obliczanych.

-WriteHistory
Określa, że wpis należy wprowadzić w msdb.dbo.sysdbmaintplan_history dla każdej akcji konserwacji wykonywanej przez sqlmaint. Jeśli określono parametr -PlanName lub -PlanID , wpisy w sysdbmaintplan_history używają identyfikatora określonego planu. Jeśli określono -D , wpisy w sysdbmaintplan_history są tworzone zerami dla identyfikatora 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 wymagane, jeśli określono również parametr -UseDefDir i jest zastępowany przez parametr -UseDefDir , jeśli określono oba te elementy. Kopię zapasową można umieścić w katalogu lub pod adresem urządzenia do taśmy (na przykład \\.\TAPE0). Nazwa pliku kopii zapasowej bazy danych jest generowana automatycznie w następujący sposób:

dbname_db_yyyyMMddhhmm.BAK  
  

gdzie

  • dbname to nazwa bazy danych, która jest tworzona jako kopia zapasowa.

  • yyyyMMddhhmm to czas operacji tworzenia kopii zapasowej rrrr = 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, DYSK lub TAŚMA.

DYSK
Określa, że nośnik kopii zapasowej to dysk.

-DelBkUps<time_period>
W przypadku kopii zapasowych dysków określa, że wszelkie pliki kopii zapasowej w katalogu kopii zapasowej zostaną usunięte, jeśli przedział czasu po utworzeniu kopii zapasowej przekracza <time_period>.

-CrBkSubDir
W przypadku kopii zapasowych dysków określa, że w katalogu [backup_path] należy utworzyć podkatalog lub w domyślnym katalogu kopii zapasowej, jeśli określono również parametr -UseDefDir . Nazwa podkatalogu jest generowana na podstawie nazwy bazy danych określonej w -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 przesłania backup_path, gdy określono oba te ustawienia. W przypadku domyślnej konfiguracji programu Microsoft 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 wykonanie kopii zapasowej nastąpi tylko wtedy, jeśli jakiekolwiek określone sprawdzenia -Ck nie wykryły 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/-BkUpLog, jeśli określisz również -BkUpOnlyIfClean, w przeciwnym razie kopia zapasowa ma miejsce bez względu na to, czy sprawdzanie zgłasza problemy.

-VrfyBackup
Określa, że funkcja RESTORE VERIFYONLY ma być uruchamiana na kopii zapasowej po jej zakończeniu.

number[minut| godzin| dni| tygodni| miesięcy]
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:

  • 12weeks

  • 3 miesiące

  • 15 dni

Jeśli zostanie określona tylko liczba , domyślna część daty to tygodnie.

Uwagi

Narzędzie sqlmaint wykonuje operacje konserwacji na co najmniej jednej bazie danych. Jeśli określono -D , operacje określone w pozostałych przełącznikach są wykonywane tylko w określonej bazie danych. Jeśli określono parametr -PlanName lub -PlanID , jedynymi informacjami, które program sqlmaint pobiera z określonego planu konserwacji, jest lista baz danych w 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. Zgłoszono błąd:

  • Jeśli którakolwiek z akcji konserwacji nie powiedzie się.

  • Jeśli kontrole -CkDB, -CkDBNoIdx, -CkAl, -CkAlNoIdx, -CkTxtAl lub -CkCat wykryją problemy z danymi.

  • Jeśli wystąpi błąd ogólny.

Uprawnienia

Narzędzie sqlmaint może być wykonywane przez dowolnego użytkownika systemu Windows z uprawnieniem Odczyt i Wykonywanie na sqlmaint.exe, które domyślnie jest przechowywane w folderze x:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER1\MSSQL\Binn. Ponadto identyfikator logowania programu SQL Server określony za pomocą -login_ID musi mieć uprawnienia programu SQL Server wymagane do wykonania określonej akcji. Jeśli połączenie z programem SQL Server używa uwierzytelniania systemu Windows, 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 uprawnień do wykonania instrukcji BACKUP. A użycie argumentu -UpdOptiStats wymaga uprawnień do wykonania instrukcji UPDATE STATISTICS. Aby uzyskać więcej informacji, zobacz sekcje "Uprawnienia" odpowiednich tematów w książkach online.

Przykłady

Odp. Przeprowadzanie kontroli DBCC w bazie danych

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

B. Aktualizowanie statystyków poprzez użycie próbki 15% we wszystkich bazach danych w planie. Ponadto zmniejsz dowolną bazę danych, która osiągnęła 110 MB, aby mieć tylko 10% wolnego miejsca

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

C. Tworzenie kopii zapasowych wszystkich baz danych zgodnie z planem w ich poszczególnych podkatalogach w domyślnej ścieżce x:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup. Ponadto usuń wszystkie kopie zapasowe starsze niż 2 tygodnie

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

D. Tworzenie kopii zapasowej bazy danych w domyślnym pliku x:\Program Files\Microsoft SQL Server\MSSQL13. MSSQLSERVER\MSSQL\Backup directory.\

sqlmaint -S MyServer -BkUpDB -BkUpMedia DISK -UseDefDir  

Zobacz też

Kopia zapasowa (Transact-SQL)
UPDATE STATISTICS (Transact-SQL)