更新时间:2023-10-07
使用SQLCMD连接到只读库
使用SQLCMD命令行工具,添加“-K ReadOnly”参数,连接侦听IP,即可连接到只读库。
如:sqlcmd -S 192.168.7.160 -K ReadOnly -d nthq -Q "select @@servername" -e
使用SSMS连接到只读库
- 打开SSMS连接到服务器页面,填写数据库服务器IP信息(侦听器IP),打开“选项”。
- 在连接属性中选择需要访问的只读数据库。
- 选择“其他连接参数”,填写“ApplicationIntent=ReadOnly”参数。
- 连接上数据库实例后,进入服务器属性,确认当前连接的实例名称为只读副本所在实例。
5.7.Always On 作业管理
客户单实例运行的Job迁移到Always On高可用架构下,并加入了可用性组的数据库,客户源库自定的Job需要进行改造。
由于Always On可用性组仅提供管理可用性组中的数据库的功能。在所有可用性副本上,客户需要手动创建或更新“登录名”和 “SQL 代理作业”。
在Always On可用性组中,所有副本都处于活动状态、正在运行且可用。当Always On进行主备切换或故障转移后,要确保SQL Server定时Job还能正常运行,就需要编写Job脚本时,对当前副本进行判断。sys.fn_hadr_is_primary_replica返回1则表示当前是主副本,返回0表示是辅助副本。由用户根据Job脚本的业务逻辑判断是在主副本还是辅助副本运行。
5.7.1.判断语句示例
若要确保这些作业仅在当前主副本上执行,每个作业中的每个步骤都必须包含在 IF 块中。
示例1:如果job必须要在主副本执行,则判断逻辑如下
IF (sys.fn_hadr_is_primary_replica('dbname') = 1)
BEGIN
…
END
ELSE
PRINT('当前副本不是主副本')
将 ‘dbname’ 配置为替换为运行作业所针对的相应数据库名称。
...省略号代表Job的业务逻辑实现
5.7.2.创建代理作业示例
以下示例演示 BizTalkMsgBoxDb1数据库上对原bts_CopyTrackedMessageToDTA 语句进行的更改: