Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к: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