2

通过 SQL 代理运行 SSIS 包时出现此错误,无法获取连接“ORACLE ADO.NET”。连接可能未正确配置,或者您可能对此连接没有正确的权限。

当我以 SQL 代理用户身份登录并直接运行 ssis 包时,一切正常。然后当我通过 SQL 代理作业执行它时,它失败了。

我已经广泛阅读了有关此主题的内容,似乎很多建议都与您的登录方式、代理帐户的配置等有关,但这些都没有帮助。

我正在使用 ADO.NET 连接登录到 Oracle 数据库。连接字符串如下(数据源、用户名和密码已更改):

数据源=DATASOURCE;用户ID=userid;密码=密码;持久安全信息=True;Unicode=True;

我正在使用包配置从注册表设置中加载它。为了检查我得到的字符串是否正确,我将它写入一个临时日志表。我肯定会从正确的注册表设置中获取我需要的字符串。

我已经通过 PL/SQL 开发人员测试了 oracle 登录凭据,它让我可以很好地登录。

据我所知,由于我为 Oracle 连接使用了明确的用户名和密码,所以 SSI 包以谁的身份运行并不重要。我能看到的唯一失败点是从注册表中读取信息,但这似乎很好。

我真的很困惑,我必须承认,并且希望这里的一些出色的专家可以提供任何帮助。

非常感谢,詹姆斯

4

2 回答 2

2

好的,经过相当多的痛苦后找到了这个。

它在一种环境下运行良好,但在另一种环境下运行良好,所以我启动了进程监视器(http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx)并通过 SQL 代理作业运行一个包,比较在每个环境中命中了哪些系统实体。

在失败的环境中,在批量传输操作点,包尝试获取 Oracle 11 客户端 DLL,然后挂起。

我知道这是安装的,而且 DLL 路径是系统环境设置。经过进一步调查,发现自从安装了 Oracle 客户端后,服务器没有重新启动,并且 SQL Server 代理进程没有被回收。

是的,您能相信吗,旧的帮助台修复“您可以重新启动计算机吗?” 工作。

叹!

于 2009-11-12T14:49:49.573 回答
1

在存储在我们的 sql server 实例上之前,我们在客户端运行包连接到 Oracle 时遇到问题。我们发现的解决方法是将包属性、保护级别更改为“不保存敏感数据”,并且出于安全目的,我们加密了包配置中的用户名和密码,这些用户名和密码由 sql server 中的 udf 解密。当然,在您尝试整个加密部分之前,我建议您将用户名和密码放在包配置中而不加密值,以查看更改保护级别设置是否可以解决您的特定问题。我希望这有帮助。

于 2009-11-10T02:41:56.117 回答