【问题标题】:SSIS package access Oracle DB. How do you know if you are using 32 or 64 bit Oracle driver?SSIS 包访问 Oracle DB。您如何知道您使用的是 32 位还是 64 位 Oracle 驱动程序?
【发布时间】:2015-03-28 22:30:23
【问题描述】:

我们有一个安装了 32 位 Oracle 11g 驱动程序的 SQL Server 生产盒。我们当前安装了相同驱动程序的测试 SQL Server 已被具有 64 位 12c 驱动程序的新服务器替换。当我们测试从 Oracle 提取并加载 SQL 的 SSIS 2012 包时,我们将使用 64 位 DTEXEC.exe 实用程序在新的 Test SQL Server 上运行该包。

Q1:是不是通过使用64位DTEXEC实用程序,包会自动寻找64位版本的驱动?

我假设在下面的连接字符串中,Provider=MSDAORA.1 指的是 Oracle 的 MS OLE Provider,所以我假设我没有使用 Oracle 驱动程序。我没有使用 DSN。

Q2: 是否查找连接字符串 MyOracleResource.MyCompany.COM 的“数据源”属性的值,并在其中之一中找到我的 tnsname.ora 文件中的相应条目基于我用来运行包的 DTEXEC 版本的文件夹?

C:\Oracle\product\11203_32bit\CLIENT_1\NETWORK\ADMIN
C:\Oracle\product\11203_64bit\CLIENT_1\NETWORK\ADMIN

如果是这样,我很惊讶 MS 驱动程序将依赖于安装 Oracle 客户端后创建的 tnsnames 文件。

在项目属性中,在属性页->配置属性->调试下,有一个属性“Run64BitRunTime”。

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>

【问题讨论】:

    标签: oracle ssis driver


    【解决方案1】:

    Q1 - 是的 - 当您在 64 位版本的 DTEXEC 下执行包时,它将使用 64 位驱动程序。您可以通过仅安装一个或另一个并尝试运行该软件包来在本地测试它。在错误的版本下运行会导致打包失败,因为找不到驱动。

    Q2 - 服务器的解析方式取决于您的组织如何配置您的环境。例如,在我工作的地方,每台机器上都有一个环境变量,它指向存储 TNSNAMES 文件的网络目录。您必须咨询您的 Oracle 专家以了解这在您的环境中是如何工作的。

    Q3 - Run64BitRunTime 属性将导致 SSIS 设计器使用不同版本的 DtsDebugHost.exe。以与 DTEXEC 类似的方式工作,它将运行 32 位或 64 位版本,具体取决于设置方式。这也是为什么一旦包在生产中运行该属性就没有影响的原因 - 因为您正在使用不同的程序来完全运行包。

    Q4 - id 属性由 SSIS 在内部分配和使用。如果您四处点击,您会看到每个组件都有一个 id。所以这与任何外部元素无关。

    【讨论】:

    • 第二季度对我来说听起来很奇怪。如果您是高级设置下控制面板中的系统或用户环境变量(更新注册表并且可以使用 %VARIABLENAME% 语法访问,我会说,不,我们不这样做。我的猜测是安装32 位和 64 位驱动程序会更改注册表以告知 ROacle 驱动程序的安装位置。问题在于 DTEXEC 的版本是否会影响要使用的 tnsname.ora 文件。听起来确实如此。除了关于 ENV 变量的注释之外,我认为我与你同步。ty
    • 您的 oracle 配置才是最重要的,驱动程序和 dtexec 无法告诉它在哪里查找。如果没有配置,它将在 oracle_home 目录中查找。你是对的,还涉及到注册表设置。 orafaq.com/wiki/ORACLE_HOME
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多