2014-09-29 22 views
1

我们有一个带SQL的工作站(win 7 Pro) Server 2014(64位),可以从链接的IBM iSeries服务器创建和访问数据。这个特定的工作站还装有SQL Server 2008 R2。我的工作站只有SSMS 2014 64位(以及Visual Studio 2012附带的SQL Server Express,我也在我的工作站上装载了该软件(win 7 Pro 64位)),并且我无法从同一链接服务器的查询中检索数据。无法从本地SQL Server(SSMS 2014 64位)上的链接服务器(IBM i series win 7.1)中检索数据 - 但来自SQL Server 2005的是

但是,使用与MS Access(2007)中为此链接服务器创建的相同的ODBC DNS,我可以从MS Access中的此IBM i系列服务器/数据库检索/查看表中的数据。

通过以下脚本,我可以在SSMS 2014 64位中创建链接服务器,并且实际上可以扩展各自的链接服务器图标并查看我所需的IBM i系列数据库(T9S),甚至可以查看所有表,但是当我运行一个查询对任何我收到此错误信息表:

消息7399,级别16,状态1,行7
OLE DB提供程序“MSDASQL”链接服务器“CWMPDTA “报道了一个错误。该提供商报告意外的灾难性失败。
Msg 7330,Level 16,State 2,Line 7
无法从链接服务器“CWMPDTA”的OLE DB提供程序“MSDASQL”中获取一行。

代码:

--this is the script I am using to create the linked server in SSMS 2014: 
EXEC master.dbo.sp_addlinkedserver 
    @server = N'CWMPDTA', 
    @srvproduct=N'CWMPDTA', 
    @provider=N'MSDASQL', 
    @datasrc=N'iSeries2', 
    @provstr=N'Provider=IBMDA400.DataSource.1;Password=myPwrd;Persist Security Info=True;User ID=myID;Data Source=10.0.0.51;Initial Catalog=T9S', 
    @catalog=N'T9S' 

EXEC master.dbo.sp_addlinkedsrvlogin 
    @rmtsrvname=N'CWMPDTA', 
    @useself=N'False', 
    @locallogin=NULL, 
    @rmtuser=N'myID', 
    @rmtpassword='myPwrd' 

基本上,我是从SQL Server 2005中的链接服务器(32位)复制此脚本。 IBM i系列ODBC驱动程序(我命名为DSN'iSeries2')为32位,并且我在64位ODBC管理器中创建了DSN(是的,我还使用相同的IBM驱动程序在32位ODBC管理器中创建了DSN,但是DSN甚至不会在我的工作站上的SSMS 2014中创建链接服务器)。我在想这可能是一个32位/ 64位不匹配的问题?

我已经去过几个IBM站点并尝试了不同的提供程序字符串,参数......但上面的脚本是唯一至少会创建链接服务器的脚本。尽管我可以在SSMS中查看表格(2014年64位),但我无法获取数据。有没有其他人有这个问题?如果有人有脚本(IBM的某个人可能?),我可以创建一个链接服务器到SSMS 2014(64位),以便我可以访问数据,我将不胜感激。

回答

0

我发现我的问题的修复 - 它是在DSN配置。我回到了ODBC管理器中 - 必须在系统DSN部分创建DSN,然后...在性能选项卡中“取消选中”

'启用预取数据以进行查询'。

选项。然后,我删除链接的服务器,并使用与上面相同的脚本重新链接它。现在我可以从SSMS 2014查询链接服务器中的表格。

相关问题