我有一个 SSIS 包,它有 4 个连接 - 一个 WebService、2 个 SQL Server 连接(跨 2 个域)和 1 个到 Oracle DB 的连接。
当从笔记本电脑上的 Visual Studio 运行该包时,它运行正常。当我将其部署到服务器时,我收到“TNS:无法解析指定的连接标识符”。tnsping 的结果:
TNSPing 的 64 位版本
C:\oracle\product\10.2.0\client_2\BIN>tnsping myservice.name
TNS Ping Utility for 64-bit Windows: Version 10.2.0.4.0 - Production on 05-SEP-2
013 11:06:10
Copyright (c) 1997, 2007, Oracle. All rights reserved.
Used parameter files:
c:\oracle\product\10.2.0\client_2\network\admin\sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
(HOST = ww.x.y.zzz)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = myservice.name))
)
OK (0 msec)
TNSPing 的 32 位版本
C:\oracle\product\10.2.0\client_1\BIN>tnsping myservice.name
TNS Ping Utility for 32-bit Windows: Version 10.2.0.4.0 - Production on 05-SEP-2
013 11:06:20
Copyright (c) 1997, 2007, Oracle. All rights reserved.
Used parameter files:
c:\oracle\product\10.2.0\client_1\network\admin\sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
(HOST = ww.x.y.zzz)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = myservice.name))
)
OK (0 msec)
现在使用 DTSWizard.exe 进行类似的实验。
使用 Oracle Provider for OLE DB。使用 Microsoft OLE DB Provider for Oracle 可获得相同的结果。
请参见这个图片- 我的声誉不足以在此处发布图片..!
(我也尝试过使用 C:\PROGRAM~2\Microsoft SQL Server\110\DTS\Binn\DTSWizard.exe - 但没有任何效果。)
笔记本电脑是 64 位的,安装了 Oracle 11.2.0。
服务器是 64 位的,安装了 Oracle 10.2.0。
我的理解是 SQL Server Management Studio 仅为 32 位 - 这可能是问题所在吗?
有人能建议我接下来该怎么做吗?我尝试了各种连接器,但似乎都没有什么区别。我能想到的唯一其他选择是从服务器中取出驱动程序,将它们放在笔记本电脑上,重新配置 SSIS 包以与它们一起使用,然后再次部署它——但是,如果有更简单的方法,我希望避免这种情况?
答案1
我会尝试两件事:
1)确保您设置了一个 Windows 系统环境变量:TNS_ADMIN 指向您的 TNS 名称文件(需要重新启动 SQL 服务器代理)
2) 查看你的 PATH 并确保 x64 客户端位于 x32 客户端之前
3)如果其他方法都失败,放弃 tns 名称文件并使用