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

下载路径
https://ola.hallengren.com/downloads.html

备份的各个参数介绍
https://ola.hallengren.com/sql-server-backup.html

DBCC checkdb的各个参数介绍
https://ola.hallengren.com/sql-server-integrity-check.html

索引重建或重组的各个参数介绍
https://ola.hallengren.com/sql-server-index-and-statistics-maintenance.html

步骤一:下载后,根据自己需要修改下面两点
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 'https://docs.microsoft.com/en-us/sql/database-engine/install-windows/rename-a-computer-that-hosts-a-stand-alone-instance-of-sql-server' WHEN SERVERPROPERTY('IsClustered') = 1 THEN 'https://docs.microsoft.com/en-us/sql/sql-server/failover-clusters/install/rename-a-sql-server-failover-cluster-instance' 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"

Guess you like

Origin blog.csdn.net/lusklusklusk/article/details/113998610