Программа sqlmaint
Программа sqlmaint выполняет заданный набор операций обслуживания с одной или несколькими базами данных. Программа sqlmaint используется для выполнения проверок DBCC, создания резервной копии базы данных и ее журнала транзакций, обновления статистики и перестроения индексов. При всех действиях по обслуживанию базы данных формируется отчет, который можно записать в указанный текстовый файл, в HTML-файл или отправить по электронной почте. Программа sqlmaint выполняет планы обслуживания баз данных, созданные в предыдущих версиях SQL Server. Для запуска планов обслуживания SQL Server из командной строки используйте программу Программа dtexec.
Важно! |
---|
В следующей версии Microsoft 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]
Аргументы
Параметры и их значения должны разделяться пробелами. Например, должен вводиться пробел между параметром -S и значением server_name.
-?
Указывает, что должна быть возвращена диаграмма синтаксиса sqlmaint . При использовании этого параметра использование других параметров не допускается.-S server_name[ **\instance_name]
Указывает целевой экземпляр Microsoft SQL Server. Укажите значение server_name, чтобы подключиться к экземпляру Компонент SQL Server Database Engine по умолчанию на этом сервере. Укажите значение server_name\**instance_name, чтобы подключиться к именованному экземпляру компонента Компонент Database Engine на этом сервере. Если сервер не указан, программа sqlmaint устанавливает соединение с экземпляром Компонент Database Engine по умолчанию на локальном компьютере.-U login_ID
Указывает используемый идентификатор входа при соединении с сервером. Если он не задан, программа sqlmaint пытается использовать проверку подлинности Microsoft Windows. Если аргумент login_ID содержит специальные символы, то он должен быть заключен в двойные кавычки ("); в противном случае использование двойных кавычек необязательно.Примечание по безопасности По возможности используйте проверку подлинности Windows.
-P password
Указывает пароль для идентификатора имени входа. Допустимо только при наличии параметра -U. Если аргумент password содержит специальные символы, он должен быть заключен в двойные кавычки. В противном случае использование двойных кавычек необязательно.Примечание по безопасности Маскировка пароля не производится. По возможности используйте проверку подлинности 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\AdventureWorks2012_maint.rpt
Имя создаваемого файла:
c:\Program Files\Microsoft SQL Server\Mssql\Backup\AdventureWorks2012_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\AdventureWorks2012_maint.htm», то параметр -DelHtmlRpt приведет к удалению программой sqlmaint всех файлов, имена которых соответствуют шаблону «C:\Program Files\Microsoft SQL Server\Mssql\Backup\AdventureWorks2012_maint*.htm» и которые являются более старыми, чем указано аргументом <time_period>.-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 MБ содержит данные размером 100 MБ, то указание 10 в качестве значения free_percent не приведет к увеличению базы данных до 110 MБ, ее размер останется равным 108 MБ.-CkDB | -CkDBNoIdx
Указывает, что инструкция DBCC CHECKDB или DBCC CHECKDB с параметром NOINDEX будет выполняться в базе данных, заданной в -D. Дополнительные сведения см. в разделе DBCC CHECKDB.Если при запуске программы sqlmaint база данных уже используется, в text_file записывается предупреждение.
-CkAl | -CkAlNoIdx
Задает выполнение инструкции DBCC CHECKALLOC с параметром NOINDEX в базе данных, указанной в параметре -D. Дополнительные сведения см. в разделе DBCC CHECKALLOC (Transact-SQL).-CkCat
Задает выполнение инструкции Transact-SQL DBCC CHECKCATALOG в базе данных, указанной в параметре -D. Дополнительные сведения см. в разделе DBCC CHECKCATALOG (Transact-SQL).-UpdOptiStats sample_percent
Задает применение следующей инструкции к каждой таблице базы данных:UPDATE STATISTICS table WITH SAMPLE sample_percent PERCENT;
Если таблицы содержат вычисляемые столбцы, то при использовании -UpdOptiStats необходимо также задать аргумент -SupportedComputedColumn.
Дополнительные сведения см. в разделе UPDATE STATISTICS (Transact-SQL).
-RebldIdx free_space
Задает перестройку индексов в таблицах базы данных-получателя с использованием процентного значения free_space, которое составляет 100% в сумме с коэффициентом заполнения. Например, если процент free_space равен 30, то используемый коэффициент заполнения равен 70. Если заданное значение процентов free_space равно 100, то повторное создание индексов происходит с использованием начального коэффициента заполнения.Если индексы построены на вычисляемых столбцах, то при использовании -RebldIdx необходимо также задать аргумент -SupportComputedColumn.
-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, если указаны оба значения. Резервная копия может размещаться в каталоге или по адресу ленточного устройства (например, \\. \TAPE0). Имя файла резервной копии базы данных создается автоматически следующим образом:
dbname_db_yyyyMMddhhmm.BAK
где
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, если указаны оба параметра. При установке Microsoft SQL Server с параметрами по умолчанию каталогом резервных копий является «C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup».TAPE
Указывает, что носителем данных резервных копий является ленточный накопитель.-BkUpOnlyIfClean
Указывает, что операция резервного копирования производится только в том случае, если заданные проверки -Ck не обнаружили ошибок данных. Действия по обслуживанию запускаются в порядке, в котором они указаны в командной строке. Следует указывать параметры -CkDB, -CkDBNoIdx, -CkAl, -CkAlNoIdx, -CkTxtAl или -CkCat перед параметрами -BkUpDB/-BkUpLog в том случае, если также предполагается указать параметр -BkUpOnlyIfClean или если операция резервного копирования данных происходит вне зависимости от обнаружения ошибок.-VrfyBackup
Задает выполнение RESTORE VERIFYONLY на резервной копии по завершении ее создания.number[минут| часов| дней| недель| месяцев]
Задает интервал времени, используемый для определения, является ли отчет или файл резервной копии достаточно старым для его удаления. number — целое число, за которым (без пробела) следует единица измерения времени. Допустимые варианты:12недель
3месяца
15дней
Если указано только number, то используемой по умолчанию частью даты будут недели.
Замечания
Программа sqlmaint производит операции обслуживания с одной или несколькими базами данных. В случае указания параметра -D операции, заданные в остальных ключах, выполняются только с указанной базой данных. В случае указания параметра -PlanName или -PlanID программа sqlmaint получает из указанного плана обслуживания только сведения о списке баз данных. Все операции, указанные в остальных параметрах программы sqlmaint, применяются к каждой базе данных, приведенной в списке, который получен из плана. Программа sqlmaint не выполняет никаких действий обслуживания, определенных в самом плане.
Программа sqlmaint возвращает 0 в случае успешного выполнения или 1 в случае ошибки. Сообщение об ошибке выводится:
в случае неудачи любой из операций обслуживания;
Если проверки -CkDB, -CkDBNoIdx, -CkAl, -CkAlNoIdx, -CkTxtAl или -CkCat обнаруживают ошибки данных.
в случае общего сбоя.
Разрешения
Программа sqlmaint может быть выполнена любым пользователем Windows с разрешениями Чтение и выполнение для файла sqlmaint.exe, который по умолчанию находится в папке «x:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER1\MSSQL\Binn». Кроме того, имя входа SQL Server, указанное в параметре -login_ID, должно иметь разрешения SQL Server, достаточные для выполнения указанного действия. Если соединение с SQL Server использует проверку подлинности Windows, имя входа SQL Server, сопоставленное с прошедшим проверку пользователем Windows, должно иметь разрешения SQL Server, достаточные для выполнения указанного действия.
Например, указание параметра -BkUpDB требует разрешения на выполнение инструкции BACKUP. Использование аргумента -UpdOptiStats требует разрешения на выполнение инструкции UPDATE STATISTICS. Дополнительные сведения см. в подразделах «Разрешения» соответствующих разделов электронной документации.
Примеры
А.Выполнение проверок DBCC в базе данных
sqlmaint -S MyServer -D AdventureWorks2012 -CkDB -CkAl -CkCat -Rpt C:\MyReports\AdvWks_chk.rpt
Б.Обновление статистики, используя в качестве образца 15 % данных из всех баз данных, содержащихся в плане.Также сжимает все базы данных, размер которых достиг 110 MБ, чтобы свободное пространство в них составляло только 10%
sqlmaint -S MyServer -PlanName MyUserDBPlan -UpdOptiStats 15 -RmUnusedSpace 110 10
В.Создает резервные копии всех баз данных, содержащихся в плане, в отдельных каталогах, вложенных в каталог по умолчанию «x:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup».Кроме того, удаляет резервные копии, созданные ранее чем две недели назад
sqlmaint -S MyServer -PlanName MyUserDBPlan -BkUpDB -BkUpMedia DISK -UseDefDir -CrBkSubDir -DelBkUps 2weeks
Г.Создает резервную копию базы данных в каталоге по умолчанию «x:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup».\
sqlmaint -S MyServer -BkUpDB -BkUpMedia DISK -UseDefDir