AlwaysOn - 使用链接服务器定位只读副本

时间:2014-07-30 15:22:39

标签: sql-server linked-server

我有一个使用AlwaysOn for HA的SQL Server 2012 SP2环境。我试图使用链接服务器从其他SQL Server 2008和2008 R2实例定位只读副本。我已经安装了SQL Native Client 11.0,并尝试了所有(OLEDB for ODBC,OLEDB等)以使它们工作,但遇到了问题。它们不路由到副本,或者连接不支持基本数据类型。我知道只读路由正常,因为OSQL测试证明是成功的。

有人做过这项工作吗?

1 个答案:

答案 0 :(得分:0)

对于SQL 2008,

您需要

  1. 安装ODBC 17驱动程序
  2. 使用odbc17驱动程序为侦听器创建DSN
  3. 使用dsn以上的链接服务器作为数据源。

对于高级SQL serer版本,您使用类似的代码来创建链接服务器

EXEC master.dbo.sp_addlinkedserver @server = N'<MY_RO_linkedserver>', 
@srvproduct=N'SQL', 
@provider=N'SQLNCLI11', 
@datasrc=N'<AON_listener,port>', 
@provstr=N'ApplicationIntent=ReadOnly; MultiSubnetFailover=Yes; User ID=xyz', 
@catalog=N'<DB_NAme>'
GO
EXEC master.dbo.sp_serveroption @server=N'MY_RO_linkedserver', @optname=N'rpc', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'MY_RO_linkedserver', @optname=N'rpc out', @optvalue=N'true'
GO
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'MY_RO_linkedserver', @locallogin = NULL , @useself = N'True', @rmtuser = N''
GO