Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо к:SQL Server
Служебная программа sqlmaint выполняет указанный набор операций обслуживания в одной или нескольких базах данных. Используйте sqlmaint для выполнения DBCC проверок, резервного копирования базы данных и его журнала транзакций, обновления статистики и перестроения индексов. Все действия по обслуживанию базы данных создают отчет, который можно отправить в указанный текстовый файл, HTML-файл или учетную запись электронной почты.
sqlmaint выполняет планы обслуживания базы данных, созданные в предыдущих версиях SQL Server. Для запуска планов обслуживания SQL Server из командной строки используйте dtexec Utility.
Это важно
Эта функция будет удалена в будущей версии SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Вместо этого используйте функцию плана обслуживания SQL Server. Дополнительные сведения о планах обслуживания см. в разделе "Планы обслуживания".
Синтаксис
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 ]
Аргументы
Разделите параметры и их значения пробелом. Например, включите пробел между -Sserver_name.
-?
Возвращает схему синтаксиса для sqlmaint. Используйте этот параметр самостоятельно.
-S server_name[\instance_name]
Указывает целевой экземпляр SQL Server. Укажите <server_name> , чтобы подключиться к экземпляру ядра СУБД SQL Server по умолчанию на этом сервере. Укажите <server_name>\<instance_name> для подключения к именованному экземпляру СУБД на этом сервере. Если сервер не указан, sqlmaint подключается к экземпляру ядра СУБД по умолчанию на локальном компьютере.
-U login_ID
Указывает учетную запись, используемую при подключении к серверу. Если этот параметр не указан, sqlmaint пытается использовать проверку подлинности Windows. Если login_ID содержит специальные символы, заключите его в двойные кавычки ("); в противном случае двойные кавычки являются необязательными.
Это важно
По возможности используйте аутентификацию Windows.
- P-пароль
Задает пароль для login_ID. Этот параметр действителен только в том случае, если вы также предоставите параметр -U. Если пароль содержит специальные символы, заключите его в двойные кавычки; в противном случае двойные кавычки являются необязательными.
Это важно
Пароль не маскируется. По возможности используйте аутентификацию Windows.
-D database_name
Указывает имя базы данных, с которой будут производиться операции обслуживания. Если database_name содержит специальные символы, заключите его в двойные кавычки; в противном случае двойные кавычки являются необязательными.
-PlanName name
Указывает имя плана обслуживания базы данных, определенного с помощью мастера планов обслуживания баз данных. Единственная информация , которую использует sqlmaint из плана, — это список баз данных в плане. Любые действия по обслуживанию, которые указываются в других параметрах sqlmaint , применяются ко всем базам данных из этого списка.
-PlanID guid
Указывает идентификатор GUID плана обслуживания базы данных, определенного с помощью мастера планов обслуживания баз данных. Единственными сведениями, используемыми sqlmaint , является список баз данных в плане. Любые действия по обслуживанию, которые указываются в других параметрах sqlmaint , применяются ко всем базам данных из этого списка. Это значение должно соответствовать значению plan_id в msdb.dbo.sysdbmaintplans.
-Rpt text_file
Указывает полный путь и имя файла для созданного отчета. Отчет также выводится на экран. В отчете сведения о версии отражаются при помощи добавления даты к имени файла. Дата создается следующим образом: в конце имени файла, но до периода в форме _<yyyyMMddhhmm>.
<yyyy> = год, <MM> = месяц, <dd> = день, <hh> = час, <mm> = минута.
При запуске программы в 10:23 1 декабря 1996 года значение аргумента text_file будет иметь следующее значение:
C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint.rpt
Имя создаваемого файла:
C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint_199612011023.rpt
Когда sqlmaint обращается к удаленному серверу, в качестве аргумента text_file необходимо указывать полное UNC-имя.
-To operator_name
Указывает оператора, которому будет отправлен сформированный отчет через службу SQL Mail.
-HtmlRpt html_file
Указывает полный путь и имя файла, в который создается HTML-отчет.
sqlmaint создает имя файла, добавляя строку формата _<yyyyMMddhhmm> к имени файла так же, как и для -Rpt параметра.
Когда sqlmaint обращается к удаленному серверу, в качестве аргумента html_file необходимо указывать полное UNC-имя файла.
-DelHtmlRpt <time_period>
Удаляет любой HTML-отчет в каталоге отчета, если интервал времени после создания файла отчета превышает time_period.
-DelHtmlRpt ищет файлы, имя которых соответствует шаблону, созданному из параметра html_file . Если html_file равен C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint.htm, то -DelHtmlRpt вызывает sqlmaint, чтобы удалить все файлы, имена которых соответствуют шаблону C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint*.htm, и которые старше указанного периода времени.
-RmUnusedSpace threshold_percent free_percent
Указывает, что неиспользуемое пространство удаляется из базы данных, указанной в -D. Этот параметр полезен только для тех баз данных, в которых задан автоматический рост. АргументThreshold_percent задает размер в мегабайтах, которого должна достичь база данных, прежде чем sqlmaint попытается удалить неиспользованное пространство данных. Если база данных меньше значения threshold_percent, никакие действия не выполняются. Значениеfree_percent задает размер сохраняемого неиспользуемого пространства в базе данных, указываемого в виде процента от конечного размера базы данных.
Например, если база данных размером 200 MБ содержит 100 MБ данных, то указание значения 10 в качестве аргумента free_percent приводит к тому, что конечный размер базы данных будет составлять 110 MБ. База данных не расширяется, если она меньше , чем free_percent , а также объем данных в базе данных. Например, если база данных размером 108 МБ содержит 100 МБ данных, указание 10 для free_percent не увеличивает ее размер до 110 МБ; она остается 108 МБ.
-CkDB | -CkDBNoIdx
Указывает, что инструкция DBCC CHECKDB или DBCC CHECKDB инструкция с NOINDEX параметром выполняется в базе данных, указанной в -D.
sqlmaint записывает предупреждение в text_file, если база данных используется во время выполнения.
-CkAl | -CkAlNoIdx
Указывает, что инструкция DBCC CHECKALLOC с параметром NOINDEX выполняется в базе данных, указанной в -D.
-CkCat
Указывает, что инструкция DBCC CHECKCATALOG выполняется в базе данных, указанной в -D.
-UpdOptiStats sample_percent
Указывает, что следующая инструкция выполняется в каждой таблице в базе данных:
UPDATE STATISTICS table WITH SAMPLE sample_percent PERCENT;
Если таблицы содержат вычисляемые столбцы, необходимо также указать -SupportedComputedColumn аргумент при использовании -UpdOptiStats.
Дополнительные сведения см. в разделе UPDATE STATISTICS.
-RebldIdx free_space
Задает перестройку индексов в таблицах базы данных-получателя с использованием процентного значения free_space , которое составляет 100 % в сумме с коэффициентом заполнения. Например, если процент free_space равен 30, то используемый коэффициент заполнения равен 70. Если указано процентное значение свободного пространства 100, индексы перестраиваются с исходным значением коэффициента заполнения.
Если индексы находятся в вычисляемых столбцах, необходимо также указать -SupportComputedColumn аргумент при использовании -RebldIdx.
-SupportComputedColumn
Необходимо указать для выполнения DBCC команд обслуживания с помощью sqlmaint в вычисляемых столбцах.
-WriteHistory
Указывает, что в msdb.dbo.sysdbmaintplan_history создаётся запись для каждой операции обслуживания, выполняемой sqlmaint. Если указаны -PlanName или -PlanID, записи в sysdbmaintplan_history используют идентификатор указанного плана. Если -D задано, записи в sysdbmaintplan_history создаются с нулями для идентификатора плана.
-BkUpDB [ backup_path ] | -BkUpLog [ backup_path ]
Задает действие резервного копирования.
-BkUpDb выполняет резервное копирование всей базы данных.
-BkUpLog выполняет резервное копирование только журнала транзакций.
backup_path указывает каталог для резервной копии.
backup_path не требуется, если -UseDefDir также указан, и -UseDefDir переопределяет backup_path, если оба указаны. Резервная копия может размещаться в каталоге или на ленточных устройствах (например, \\.\TAPE0). Имя файла резервной копии базы данных создается автоматически следующим образом:
dbname_db_yyyyMMddhhmm.BAK
Where:
-
<dbname>— имя резервной копии базы данных. -
<yyyyMMddhhmm>— это время операции резервного копирования с<yyyy>= год,<MM>= месяц, = день,<dd><hh>= час и<mm>= минута.
Имя файла резервной копии журнала транзакций автоматически создается в аналогичном формате:
dbname_log_yyyymmddhhmm.BAK
Если вы используете параметр -BkUpDB, вы также должны указать носитель, используя параметр -BkUpMedia.
-BkUpMedia
Указывает тип носителя резервной копии: либо DISK, либо TAPE.
DISK
Указывает, что носителем данных резервных копий является диск.
-DelBkUps <time_period>
Для резервных копий дисков указывает, что любой файл резервного копирования в каталоге резервного копирования удаляется, если интервал времени после создания резервной копии превышает time_period.
-CrBkSubDir
Для резервных копий дисков указывает, что подкаталог создается в каталоге backup_path или в каталоге резервного копирования по умолчанию, если -UseDefDir он также указан. Имя подкаталога создается из имени базы данных, указанного в -D.
-CrBkSubDir предоставляет простой способ поместить все резервные копии для разных баз данных в отдельные подкаталоги, не изменив параметр backup_path .
-UseDefDir
Для резервного копирования на диск задает создание файла резервной копии в каталоге резервных копий по умолчанию.
UseDefDir переопределяет backup_path, если оба указаны. При настройке SQL Server по умолчанию используется каталог резервного копирования по умолчанию C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup.
ЛЕНТА
Указывает, что носителем данных резервных копий является ленточный накопитель.
-BkUpOnlyIfClean (только резервное копирование, если без изменений)
Указывает, что резервное копирование происходит только в том случае, если указанные -Ck проверки не находят проблем с данными. Действия по обслуживанию запускаются в порядке, в котором они указаны в командной строке. Укажите параметры -CkDB, -CkDBNoIdx, -CkAl, -CkAlNoIdx-CkTxtAlили -CkCat перед -BkUpDB или -BkUpLog параметрами, если вы также собираетесь указать-BkUpOnlyIfClean. Если эти параметры не указаны, резервное копирование выполняется независимо от того, обнаружены ли проблемы в отчетах или нет.
-VrfyBackup
Указывает, что RESTORE VERIFYONLY выполняется в резервной копии после завершения.
число [ минут| часы| день| недели| месяцы ]
Задает интервал времени, используемый для определения, является ли отчет или файл резервной копии достаточно старым для его удаления. number — целое число, за которым (без пробела) следует единица измерения времени. Допустимые примеры:
12weeks3months15days
Если указать только число, то по умолчанию часть даты будет weeks.
Замечания
Программа sqlmaint выполняет операции обслуживания с одной или несколькими базами данных. При указании -Dпрограмма выполняет операции, указанные в оставшихся коммутаторах только в указанной базе данных. Если вы укажете -PlanName или -PlanID, sqlmaint извлекает из указанного плана обслуживания единственную информацию — список баз данных в плане. Все операции, указанные в остальных параметрах sqlmaint , применяются ко всем базам данных, которые указаны в полученном из плана списке. Служебная программа sqlmaint не применяет какие-либо действия по обслуживанию, определенные в самом плане.
В случае успешного выполнения sqlmaint возвращает 0, а в случае ошибки — 1. Сообщается о сбое, если:
Любое из действий по обслуживанию завершается ошибкой.
-CkDB,-CkDBNoIdx,-CkAl,-CkAlNoIdx,-CkTxtAlили-CkCatпроверяют наличие проблем с данными.Произошел общий сбой.
Разрешения
Любой пользователь Windows с разрешением sqlmaint.exe может выполнить служебную программу sqlmaint. По умолчанию sqlmaint.exe хранится в папке <X>:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER1\MSSQL\Binn . Кроме того, у указанного -login_ID имени входа SQL Server должны быть разрешения SQL Server, необходимые для выполнения указанного действия. При использовании проверки подлинности Windows для подключения к SQL Server имя входа SQL Server, сопоставленное с прошедшим проверку подлинности пользователем Windows, должно иметь разрешения SQL Server, необходимые для выполнения указанного действия.
Например, для выполнения инструкции -BkUpDBBACKUP требуется разрешение. Для использования аргумента -UpdOptiStats и выполнения инструкции UPDATE STATISTICS требуется разрешение. Дополнительные сведения см. в разделе "Разрешения" (ядро СУБД).
Примеры
А. Выполнение проверок DBCC в базе данных
В этом примере выполняются DBCC проверки с использованием базы данных.
sqlmaint -S MyServer -D AdventureWorks2022 -CkDB -CkAl -CkCat -Rpt C:\MyReports\AdvWks_chk.rpt
В. Обновите статистику
В этом примере статистика обновляется с помощью выборки 15% во всех базах данных в рамках плана. Любая база данных, достигающая 110 МБ, сократилась до 10% свободного места.
sqlmaint -S MyServer -PlanName MyUserDBPlan -UpdOptiStats 15 -RmUnusedSpace 110 10
С. Резервное копирование всех баз данных
В этом примере выполняется резервное копирование всех баз данных в плане в отдельные подкаталоги, используя каталог по умолчанию <X>:\Program Files\Microsoft SQL Server\MSSQLl13.MSSQLSERVER\MSSQL\Backup . Она также удаляет все резервные копии старше двух недель.
sqlmaint -S MyServer -PlanName MyUserDBPlan -BkUpDB -BkUpMedia DISK -UseDefDir -CrBkSubDir -DelBkUps 2weeks
Д. Резервное копирование базы данных
В этом примере выполняется резервное копирование одной базы данных в каталог по умолчанию <X>:\Program Files\Microsoft SQL Server\MSSQLl13.MSSQLSERVER\MSSQL\Backup .
sqlmaint -S MyServer -BkUpDB -BkUpMedia DISK -UseDefDir