ITPub博客

首页 > 数据库 > SQL Server > Hallengren是SQl Server集备份和索引重建和DBCC checkdb一起的超级好用的工具

Hallengren是SQl Server集备份和索引重建和DBCC checkdb一起的超级好用的工具

原创 SQL Server 作者:lusklusklusk 时间:2021-02-23 17:43:45 0 删除 编辑

下载路径


备份的各个参数介绍


DBCC checkdb的各个参数介绍


索引重建或重组的各个参数介绍




步骤一:下载后,根据自己需要修改下面两点
1、它的一些工具脚本默认是放在master数据库下,如果想放入其他数据库下,只需要把下面代码中的master修改为其他数据库就行
USE [master] -- Specify the database in which the objects will be created

2、如果实例名@@ServerName和服务器SERVERPROPERTY('machinename')不一致,则注释掉如下代码
IF @@SERVERNAME <> CAST(SERVERPROPERTY('ServerName') AS nvarchar(max)) AND SERVERPROPERTY('IsHadrEnabled') = 1
BEGIN
INSERT INTO @Errors ([Message], Severity, [State])
SELECT 'The @@SERVERNAME does not match SERVERPROPERTY(''ServerName''). See ' + CASE WHEN SERVERPROPERTY('IsClustered') = 0 THEN ' WHEN SERVERPROPERTY('IsClustered') = 1 THEN ' END + '.', 16, 1
END


步骤二:下载后的脚本修改好后,就可以直接执行该脚本,执行后,会生成如下7个job,4个备份job,2个DBCC CHECKDB的job,1个index rebuild\reorganize的job
DatabaseBackup - SYSTEM_DATABASES - FULL
DatabaseBackup - USER_DATABASES - DIFF
DatabaseBackup - USER_DATABASES - FULL
DatabaseBackup - USER_DATABASES - LOG
DatabaseIntegrityCheck - SYSTEM_DATABASES
DatabaseIntegrityCheck - USER_DATABASES
IndexOptimize - USER_DATABASES


步骤三:直接修改job的步骤信息和给job添加schedule调度计划就行





优点
1、备份的时候,可供选择的选项很多,非常方便,比如备份后是否执行Verify操作,备份是否Compress,是否启用mirror目录,备份超过多长时间删除等等

EXECUTE [dbo].[DatabaseBackup]
@Databases = 'USER_DATABASES',
@Directory = '\\backup1\DBPROD2',
@BackupType = 'FULL',
@Verify = 'Y',
@CleanupTime = 360,
@CheckSum = 'Y',
@LogToTable = 'Y',
@MAXTRANSFERSIZE = 66666,
@Compress = 'Y',
@Updateability = 'READ_WRITE',
@MirrorDirectory = '\\backup2\DBPROD2',
@MirrorCleanupTime= 480



2、就算job配置好了,批量修改或添加参数也很方便,只要登录服务器执行如下即可
use msdb
exec sp_update_jobstep @job_name = N'IndexOptimize - USER_DATABASES',
@step_id = 1,
@command = N'EXECUTE [dbo].[IndexOptimize] @Databases = ''USER_DATABASES'', @LogToTable = ''Y'', @Timelimit = 18000'
exec sp_update_jobstep @job_name = N'DatabaseIntegrityCheck - USER_DATABASES',
@step_id = 1,
@command = N'EXECUTE [dbo].[DatabaseIntegrityCheck] @Databases = ''USER_DATABASES'', @LogToTable = ''Y'', @Timelimit = 18000'


3、遇到sqlserver express版本,没有sqlserver agent服务导致没有job的情况下,也可以使用bat批处理脚本调用sqlcmd操作系统命令去调用hallengren的存储过程,当然-Q后面的必须用""双引号,参数的值如果为字符串,必须要用单引号包含起来,每个参数之间不能换行,这点和TSQL不一样
sqlcmd -E -d DBA -Q "EXEC DatabaseBackup @Databases = 'SYSTEM_DATABASES',@Directory = '\\sanbackup9',@BackupType = 'FULL',@Verify = 'Y',@CleanupTime = 360,@CheckSum = 'Y',@LogToTable = 'Y',@MAXTRANSFERSIZE = 66666"

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30126024/viewspace-2758813/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Welcome to Lukes DB HOME。 Oracle OCM、Mysql OCP, 8年以上DBA工作经验,博客仅记录自己的一个学习过程,不代表完全准确,如有需要,欢迎转载。

注册时间:2015-02-02

  • 博文量
    438
  • 访问量
    791883