sqlmaint 实用工具在一个或多个数据库上执行一套指定的维护操作。可以使用 sqlmaint 来运行 DBCC 检查,备份数据库及其事务日志,更新统计并重建索引。所有数据库维护活动都生成一个报表,该报表可以发送到一个指定的文本文件、HTML 文件或电子邮件帐户。
语法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_percent free_percent]
[-CkDB | -CkDBNoIdx]
[-CkAl | -CkAlNoIdx]
[-CkCat]
[-UpdOptiStats sample_percent]
[-RebldIdx free_space]
[-WriteHistory]
[
{-BkUpDB [backup_path] | -BkUpLog [backup_path] }
{-BkUpMedia
{DISK [ [-DelBkUps
[-CrBkSubDir ] [ -UseDefDir ]
]
| TAPE
}
}
[-BkUpOnlyIfClean]
[-VrfyBackup]
]
}
]
<time_period> ::=
number[minutes | hours | days | weeks | months]
说明 参数与其值之间必须用一个空格分隔。例如,在 -S 和 server 之间必须有一个空格。
注释sqlmaint 在一个或多个数据库上执行维护操作。如果指定了 -D,则仅在指定的数据库上执行在剩余的开关中指定的操作。如果指定了 -PlanName 或 -PlanID,则 sqlmaint 从指定的维护计划中检索的唯一信息是计划中的数据库列表。在 sqlmaint 剩余参数中指定的全部操作,都将应用于从计划取得的列表中的每个数据库。sqlmaint 不进行在计划本身中定义的任何维护活动。
如果成功运行,则 sqlmaint 实用工具返回 0,否则返回 1。在下列情况下将报告失败:
有关此实用工具的位置和运行方式的信息,请参见命令提示实用工具入门。
示例sqlmaint -S MyServer -U "sa" -P "SaPwd" -D Northwind -CkDB -CkAl -CkCat -Rpt C:\MyReports\Nwind_chk.rpt
sqlmaint -S MyServer -U "sa" -P "SaPwd" -PlanName MyUserDBPlan -UpdOptiStats 15 -RmUnusedSpace 110 10
sqlmaint -S MyServer -U "sa" -P "SaPwd" -PlanName MyUserDBPlan -BkUpDB -BkUpMedia DISK -UseDefDir -CrBkSubDir -DelBkUps 2weeks
参数
-?
指定返回 sqlmaint 的语法关系图。此参数必须单独使用。
-S server_name[\instance_name]
指定 Microsoft® SQL Server™ 2000 的目标实例。指定用于连接到该服务器上的 SQL Server 2000 默认实例的 server_name。指定用于连接到该服务器上的 SQL Server 2000 命名实例的 server_name\instance_name。如果未指定服务器,则 sqlmaint 连接到本地计算机上的 SQL Server 2000 默认实例。
-U login_ID
指定连接服务器时使用的登录 ID。如果未提供,则 sqlmaint 尝试使用 Windows 身份验证。如果 login_ID 包含特殊的字符,则它必须用英文双引号 (") 引起来;否则,双引号是可选的。
安全说明 如果可能,请使用 Windows 身份验证。
-P password
指定登录 ID 的密码。仅当也使用 -U 参数时才有效。如果 password 包含特殊字符,则它必须用英文双引号 (") 引起来;否则,双引号是可选的。
安全说明 不会屏蔽密码。如果可能,请使用 Windows 身份验证。
-D database_name
指定在其中执行维护操作的数据库的名称。如果 database_name 包含特殊字符,则它必须用英文双引号 (") 引起来;否则,双引号是可选的。
-PlanName name
指定使用数据库维护计划向导定义的数据库维护计划的名称。sqlmaint 唯一使用的该计划中的信息是其数据库列表。任何在其它 sqlmaint 参数中指定的维护活动都可应用于此列表中的数据库。可以从 SQL Server 企业管理器获得计划名称。
-PlanID guid
指定使用数据库维护计划向导定义的数据库维护计划的全局唯一标识符 (GUID)。sqlmaint 唯一使用的该计划中的信息是其数据库列表。任何在其它 sqlmaint 参数中指定的维护活动都可应用于此列表中的数据库。这必须与 msdb.dbo.sysdbmaintplans 中的 plan_id 值匹配。
-Rpt text_file
指定包含所生成报表的文件的完整路径和名称。报表也可以生成到屏幕上。报表通过将日期添加到文件名中来维护版本信息。日期生成方式如下:在文件名末尾、句点之前,使用 _yyyyMMddhhmm 格式。Yyyy = 年,MM = 月,dd = 日,hh = 时,mm = 分。
如果在 1996 年 12 月 1 日的 10:23 A.M. 运行该实用工具,且 text_file 的值为:
c:\Program Files\Microsoft SQL Server\Mssql\Backup\Nwind_maint.rpt
生成的文件名为:
c:\Program Files\Microsoft SQL Server\Mssql\Backup\Nwind_maint_199612011023.rpt
当 sqlmaint 访问远程服务器时 text_file 需要完整的 UNC 文件名。
-To operator_name
指定通过 SQL 邮件将生成的报表发送给哪个操作员。可以使用 SQL Server 企业管理器定义操作员。
-HtmlRpt html_file
指定包含所生成的 HTML报表的文件的完整路径和文件名称。sqlmaint 通过向文件名追加格式为 _yyyyMMddhhmm 的字符串生成文件名,这与 -Rpt 参数的作用相同。
sqlmaint 访问远程服务器时,html_file 需要完整的 UNC 文件名。
-DelHtmlRpt <time_period>
指定如果报表文件创建后的时间间隔超过了 <time_period> 时将删除报表目录中的所有 HTML 报表。
-DelHtmlRpt 查找那些名称符合由 html_file 参数生成的模式的文件。如果 html_file 为 c:\Program Files\Microsoft SQL Server\Mssql\Backup\Nwind_maint.htm,则 -DelHtmlRpt 将导致 sqlmaint 删除任何名称与 c:\Program Files\Microsoft SQL Server\Mssql\Backup\Nwind_maint*.htm 模式匹配的文件,以及早于指定的 <time_period> 的文件。
-RmUnusedSpace threshold_percent free_percent
指定从 -D 指定的数据库中删除未使用的空间。此选项仅对定义为自动增长的数据库有用。Threshold_percent 按兆字节指定在 sqlmaint 尝试删除未使用的数据空间之前数据库必须达到的大小。如果数据库小于 threshold_percent,则不进行操作。Free_percent 指定在数据库中必须保留的未使用空间的大小,按数据库最终大小的百分比指定。例如,如果一个 200 MB 的数据库包含 100 MB 的数据,将 free_percent 指定为 10,则最终数据库大小为 110 MB。应该注意的是,如果数据库小于 free_percent 加上数据库中的数据,则数据库不会扩展。例如,如果一个 108 MB 的数据库有 100 MB 的数据,则将 free_percent 指定为 10 不会使数据库扩展到 110 MB,而仍是 108 MB。
-CkDB | -CkDBNoIdx
指定在 -D 指定的数据库中运行的 DBCC CHECKDB 语句或带有 NOINDEX 选项的 DBCC CHECKDB 语句。有关更多信息,请参见 DBCC CHECKDB。
如果 sqlmaint 运行时数据库正在使用,则会在 text_file 中写入一个警告。
-CkAl | -CkAlNoIdx
指定在 -D 指定的数据库中运行的 DBCC NEWALLOC 语句或带有 NOINDEX 选项的 DBCC NEWALLOC 语句。有关更多信息,请参见 DBCC NEWALLOC。
-CkCat
指定在 -D 指定的数据库中运行 DBCC CHECKCATALOG 语句。有关更多信息,请参见 DBCC CHECKCATALOG。
-UpdOptiStats sample_percent
指定在数据库的每个表上运行下列语句:
UPDATE STATISTICS table WITH SAMPLE sample_percent PERCENT
有关更多信息,请参见更新统计信息。
-RebldIdx free_space
指定使用 free_space 百分比值作为填充因子的倒数,重建目标数据库中的表的索引。例如,如果 free_space 百分比值为 30,则使用的填充因子为 70。如果 free_space 百分比值为 100,则使用初始的填充因子值重建索引。
-WriteHistory
指定在 msdb.dbo.sysdbmaintplan_history 中为由 sqlmaint 执行的每次维护操作生成一项。如果指定了 -PlanName 或 -PlanID,则 sysdbmaintplan_history 中的项目使用指定计划的 ID。如果指定了 -D,则通过给计划 ID 赋予零值来生成 sysdbmaintplan_history 中的项目。
-BkUpDB [backup_path] | -BkUpLog [backup_path]
指定备份操作。-BkUpDb 备份整个数据库。-BkUpLog 仅备份事务日志。
[backup_path] 指定备份的目录。如果也指定了 -UseDefDir,则不需要 [backup_path],如果两者都指定,则 [backup_path] 被 -UseDefDir 替代。备份可以放在目录或磁带设备地址中(例如,\\.\TAPE0)。数据库备份的文件名自动生成如下:
dbname_db_yyyyMMddhhmm.BAK
其中
事务备份的文件名自动使用与下面相似的格式生成:
dbname_log_yyyymmddhhmm.BAK
如果使用 -BkUpDB 参数,则必须通过 -BkUpMedia 参数指定媒体。
-BkUpMedia
指定备份的媒体类型。
DISK
指定备份媒体为磁盘。
-DelBkUps <time_period>
指定如果创建备份后的时间间隔超过了 <time_period> 则删除备份目录中的所有备份文件。
-CrBkSubDir
指定在 [backup_path] 目录中创建子目录;如果同时指定了 UseDefDir,则在默认的备份目录中创建子目录。子目录的名称从 -D 指定的数据库名称中生成。-CrBkSubDir 提供了一种简单的方法,可用来将不同数据库的所有备份放入单独的子目录中,而不必更改 [backup_path] 参数。
-UseDefDir
指定在默认的备份目录中创建备份文件。如果两者都指定,则 UseDefDir 替代 [backup_path]。在默认的 SQL Server 2000 安装程序中,默认备份目录是 c:\Program Files\Microsoft SQL Server\Mssql\Backup。
TAPE
指定备份媒体为磁带。
-BkUpOnlyIfClean
指定仅当任何指定的 -Ck 检查未发现数据问题时才进行备份。维护操作的运行顺序与其在命令提示中出现的顺序相同。如果要同时指定 -BkUpOnlyIfClean,则应在 -BkUpDB/-BkUpLog 参数前指定参数 -CkDB、-CkDBNoIdx、-CkAl、-CkAlNoIdx、-CkTxtAl 或 -CkCat,否则无论是否检查报表问题,都将进行备份。
-VrfyBackup
指定当备份完成时在备份上运行 RESTORE VERIFYONLY。
number[minutes | hours | days | weeks | months]
指定时间间隔,用来确定报表或备份文件是否陈旧到需要删除的程度。number 是一个整数。有效的示例包括 12weeks、3months 和 15days。如果仅指定了 number,则默认的日期部分为 weeks。
一个客户的备份的例子:
每天周六做一次全库备份,保存两周的全库备份(-PlanID 可以不变就使用下面的值,如果要单独备份一个数据库,可以加上-D "dbname"参数,-BkExt参数可以不加):
EXECUTE master.dbo.xp_sqlmaint N'-PlanID 0D3447E6-67AA-4C30-8226-491BF1684567 -WriteHistory -VrfyBackup -BkUpMedia DISK -BkUpDB "D:\DataBak\Total" -DelBkUps 2WEEKS -CrBkSubDir -BkExt "BAK"'
除周六以外每天做一次差异备份:
BACKUP DATABASE [info_guodu] TO DISK = N'D:\DataBak\Increase\info_guodu.bak'
WITH INIT , NOUNLOAD , DIFFERENTIAL , NAME = N'info_guodu 备份', NOSKIP , STATS = 10, NOFORMAT
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/35489/viewspace-612470/ ,如需转载,请注明出处,否则将追究法律责任。