SQL Server AlwaysOn下通过SQLAgent服务实现索引优化等任务

SQL Server Always On高可用下SQL Agent服务并非高可用,即这个服务是独立运行在各自的机器上的。这样就带来了一个问题,如想通过SQL Agent服务来实现索引优化,备份等任务时,如何保证任务在当前可以操作的数据库上执行,以保证计划按设计执行。
下面以索引重新生成计划为例进行说明:
(SQL Server Always On 为非域模式)
1. 将启动SQL Server的域用户或者非域用户增加为msdb下的SQLAgentOperatorRole和SQLAgentUserRole和SQLAgentReaderRole角色。以保证可以执行SQL Agent计划的权限。

2. 维护计划向导选择重新生成索引

3. 配置的时候服务器默认为本地服务器,所以并不具备高可用的功能

4. 为了解决该问题,需要增加判断当前运行的库是否主库的脚本,如果不是主库,则抛出异常,不在做优化的操作

T-SQL语句如下:
declare @errmsg nvarchar(300)='This is not primary replia'
if ((select sys.fn_hadr_is_primary_replica('V73GFTV20200804CLJ'))<>1)
begin
raiserror(@errmsg,16,1)
end
5. 测试验证
a) 当前库是辅助库
SQL Server AlwaysOn下通过SQLAgent服务实现索引优化等任务
SQL Server Always On高可用下SQL Agent服务并非高可用,即这个服务是独立运行在各自的机器上的。这样就带来了一个问题,如想通过SQL ...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



