2012-09-14 35 views
2

我试图在几个镜像数据库上配置一个SSIS 2012项目。 我希望能够使用OLEDB提供程序,但似乎并不支持连接字符串中的故障转移伙伴属性。 我试图添加密钥“故障转移伙伴”,“Failover_Partner”和“FailoverPartner”,但它们都不起作用 - 即使持有主体数据库,连接也不会尝试连接故障转移伙伴。我的所有测试都使用属性键的所有三种变体进行。使用镜像的SSIS 2012 oledb连接字符串

如果我使用ADO.NET连接,则在连接管理器中会有一个名为“故障转移伙伴”的内置设置,它的工作方式与魅力类似,它可以连接到数据库,并且主体位于其中一台服务器......就像它应该。

我的问题是:当使用SSIS 2012再次使用SQL Server 2012镜像数据库时,OLEDB无法使用镜像数据库开箱即用吗?

我如何测试 我的测试是非常简单的:我有一个“执行SQL任务”与下面的ConnectionString的OLEDB连接管理器: 数据源=服务器1;初始目录= MyDatabase的;供应商= SQLOLEDB.1 ;集成安全= SSPI;自动翻译=假;应用程序名称=我的应用程序; 我曾尝试加入不同版本的故障转移合作伙伴如上所述:

数据源= srv1.domain.local;初始目录= MyDatabase的;提供商= SQLOLEDB.1;集成安全性= SSPI;自动翻译= FALSE;应用名称=我的应用程序;故障转移合作伙伴= srv2.domain.local;

如果MyDatabase是srv1的主体,那么它就起作用。如果数据库是srv2上的主体,则SSIS将失败,并显示以下错误: 错误:SSIS错误代码DTS_E_OLEDBERROR。发生了OLE DB错误。错误代码:0x80004005。 OLE DB记录可用。源:“用于SQL Server的Microsoft OLE DB提供程序”Hresult:0x80004005描述:“无法打开登录所请求的数据库”MyDatabase“,登录失败。”

以下错误日志中的srv1上记录: 用户'DOMAIN \ MyUser'登录失败。原因:无法打开明确指定的数据库'MyDatabase'。 [客户端:10.0.0.3]

我在做什么错?还是需要更改为按预期工作100%的ADO.NET?

感谢名单, Sjang

回答

0

有,如果你使用OLEDB/SQLNCLI11.1连接字符串来连接故障转移伙伴参数:

Data Source=srv1;Initial Catalog=myDB;Provider=SQLNCLI11.1;Integrated Security=SSPI;Failover Partner=failover_partner_name; 
+0

完美!我的问题的根源竟然是因为我也有一个脚本任务,它使用了相同的连接字符串,但带有一个SqlConnection对象。这不支持Provider关键字,因此我删除并打破了镜像。 我缺乏.NET技能是我真正的问题。通过使用OleDbConnection,我现在可以在两个数据源以及脚本任务中使用正确的连接字符串。谢谢! –

+0

非常欢迎您! – milivojeviCH