我们有一个Server生产框,其中安装了32位Oracle 11g驱动程序。我们当前安装了相同驱动程序的SQL Server测试已被具有64位12c驱动程序的新服务器所取代。当我们测试一个从Oracle提取并加载SQL的SSIS 2012包时,我们将使用64位DTEXEC.exe实用程序在新的test上运行该包。
Q1:是否由于使用64位DTEXEC实用程序,包将自动查找驱动程序的64位版本?
我假设在下面的连接字符串中,Provider=MSDAORA.1引用了Oracle的MS提供程序,因此,我假设我没有使用Oracle驱动程序。我不使用DSN。
Q2:是否查找连接字符串MyOracleResource.MyCompany.COM的"Data“属性的值,并根据用于运行包的DTEXEC版本在其中一个文件夹中的tnsname.ora文件中找到相应的条目?
C:\Oracle\product\11203_32bit\CLIENT_1\NETWORK\ADMIN
C:\Oracle\product\11203_64bit\CLIENT_1\NETWORK\ADMIN
如果是这样的话,我感到惊讶的是,MS驱动程序将依赖于安装Oracle客户端而创建的tnsname文件。
在properties中,在property Pages->Config Properties->Debugging下,有一个属性“Run64BitRunTime”。
Q3:Q3是正确的,我认为在IDE中运行时,这相当于选择DTEXE实用程序的32位或64位版本从cmd行运行包?
当我查看Oracle连接对象上的属性时,我看到一个值为{0cbfe196-1a88-4b62-8522-b34dbb37ba71}的"ID“属性。
Q4:这个GUID是否用于识别驱动程序的特定驱动程序版本,从而在与生产不匹配的环境中进行测试时可能导致问题?
<Configuration ConfiguredType="Property" Path="\Package.Connections[MyOracleDb].Properties[ConnectionString]" ValueType="String">
<ConfiguredValue>Data Source=MyOracleResource.MyCompany.COM;User ID=MyUser;Password=MyPassword;Provider=MSDAORA.1;Persist Security Info=True;</ConfiguredValue>
</Configuration>
发布于 2015-01-29 09:56:17
Q1 -是的-当您在64位版本的DTEXEC下执行一个包时,它将使用64位驱动程序。您可以通过只安装一个或另一个程序包在本地测试此程序包并尝试运行该软件包。在错误的版本下运行将导致包失败,因为它找不到驱动程序。
Q2 -服务器的解析方式取决于组织如何配置您的环境。例如,在我工作的地方,有一个环境变量被推入到每台机器上,它指向存储TNSNAMES文件的网络目录。您必须咨询您的Oracle专家,才能了解这在您的环境中是如何工作的。
Q3 - Run64BitRunTime属性将导致SSIS设计器使用不同版本的DtsDebugHost.exe。它以与DTEXEC类似的方式工作,它将运行32位或64位版本,具体取决于设置的方式。这也是为什么当包在生产中运行时,该属性没有任何影响--因为您使用的是不同的程序来完全运行包。
Q4 - id属性由SSIS在内部分配和使用。如果你点击周围,你会看到每个组件都有一个id。因此,这与任何外部元素都无关。
https://stackoverflow.com/questions/28219101
复制相似问题