Программа sqlmaint
Программаsqlmaint выполняет заданный набор операций обслуживания с одной или несколькими базами данных. Используйте программу sqlmaint для запуска проверок DBCC, создания резервной копии базы данных и ее журнала транзакций, для обновления статистики, а также для перестроения индексов. При всех действиях по обслуживанию базы данных формируется отчет, который можно записать в указанный текстовый файл, в HTML-файл или отправить по электронной почте. Программа sqlmaint выполняет планы обслуживания баз данных, созданные в предыдущих версиях SQL Server. Для запуска планов обслуживания SQL Server из командной строки используйте программу dtexec utility.
Важно! |
---|
В следующей версии 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. При использовании этого параметра использование других параметров не допускается.-Sserver_name[ **\instance_name]
Указывает целевой экземпляр Microsoft SQL Server. Укажите значение server_name, чтобы подключиться к экземпляру SQL Server Database Engine по умолчанию на этом сервере. Укажите значение server_name\**instance_name, чтобы подключиться к именованному экземпляру компонента Database Engine на этом сервере. Если сервер не указан, то программа sqlmaint выполняет подключение к экземпляру компонента Database Engine по умолчанию на локальном компьютере.-Ulogin_ID
Указывает используемый идентификатор входа при соединении с сервером. Если он не указан, то программа sqlmaint производит попытку использования проверки подлинности Microsoft Windows. Если аргумент login_ID содержит специальные символы, то он должен быть заключен в двойные кавычки ("); в противном случае использование двойных кавычек необязательно.Примечание по безопасности По возможности используйте проверку подлинности Windows.
-Ppassword
Указывает пароль для идентификатора входа. Допустим только при наличии параметра -U. Если аргумент password содержит специальные символы, он должен быть заключен в двойные кавычки ("); в противном случае использование двойных кавычек необязательно.Примечание по безопасности Маскировка пароля не производится. По возможности используйте проверку подлинности Windows.
-Ddatabase_name
Указывает имя базы данных, с которой будут производиться операции обслуживания. Если аргумент database_name содержит специальные символы, он должен быть заключен в двойные кавычки ("); в противном случае использование двойных кавычек необязательно.-PlanNamename
Указывает имя плана обслуживания базы данных, определенного с помощью мастера планов обслуживания баз данных. Единственные сведения, которые программа sqlmaint использует из этого плана, — это список баз данных в плане. Любые действия по обслуживанию, которые указываются в других параметрах sqlmaint, применяются ко всем базам данных этого списка.-PlanIDguid
Указывает идентификатор GUID плана обслуживания базы данных, определенного с помощью мастера планов обслуживания баз данных. Единственные сведения, которые программа sqlmaint использует из этого плана, — это список баз данных в плане. Любые действия по обслуживанию, которые указываются в других параметрах sqlmaint, применяются ко всем базам данных этого списка. Значение должно совпадать со значением аргумента plan_id в таблице msdb.dbo.sysdbmaintplans.-Rpttext_file
Указывает полный путь и имя файла, в котором будет сформирован отчет. Отчет также выводится на экран. В отчете сведения о версии отражаются при помощи добавления даты к имени файла. Дата формируется следующим образом: в конце имени файла, но перед точкой в формате _yyyyMMddhhmm. yyyy = год, MM = месяц, dd = день, hh = час, mm = минута.При запуске программы в 10:23 1 декабря 1996 года значением аргумента text_file будет:
c:\Program Files\Microsoft SQL Server\Mssql\Backup\AdventureWorks2008R2_maint.rpt
Имя создаваемого файла:
c:\Program Files\Microsoft SQL Server\Mssql\Backup\AdventureWorks2008R2_maint_199612011023.rpt
Необходимо указывать в качестве аргумента text_file полное имя в формате UNC, когда программа sqlmaint обращается к удаленному серверу.
-To operator_name
Указывает оператора, которому будет отправлен сформированный отчет через службу SQL Mail.-HtmlRpthtml_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\AdventureWorks2008R2_maint.htm», то параметр -DelHtmlRpt приведет к удалению программой sqlmaint всех файлов, имена которых соответствуют шаблону «C:\Program Files\Microsoft SQL Server\Mssql\Backup\AdventureWorks2008R2_maint*.htm» и которые являются более старыми, чем указано аргументом <time_period>.-RmUnusedSpacethreshold_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).-UpdOptiStatssample_percent
Задает применение следующей инструкции к каждой таблице базы данных:UPDATE STATISTICS table WITH SAMPLE sample_percent PERCENT
Если таблицы содержат вычисляемые столбцы, то необходимо также задать аргумент -SupportedComputedColumn при использовании -UpdOptiStats.
Дополнительные сведения см. в разделе UPDATE STATISTICS (Transact-SQL).
-RebldIdxfree_space
Задает перестройку индексов в таблицах базы данных-получателя с использованием процентного значения free_space, которое составляет 100% в сумме с коэффициентом заполнения. Например, если процент free_space равен 30, то используемый коэффициент заполнения равен 70. Если заданное значение процентов free_space равно 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 в случае указания обоих параметров. Резервная копия может размещаться в каталоге или по адресу ленточного устройства (например, \\.\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\MSSQL10_50.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 AdventureWorks -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\MSSQL10_50.MSSQLSERVER\MSSQL\Backup directory». Кроме того, удаляет резервные копии, созданные ранее, чем две недели назад
sqlmaint -S MyServer -PlanName MyUserDBPlan -BkUpDB -BkUpMedia DISK -UseDefDir -CrBkSubDir -DelBkUps 2weeks
Г. Создание резервной копии базы данных в каталоге по умолчанию «x:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup»
sqlmaint -S MyServer -BkUpDB -BkUpMedia DISK -UseDefDir