我们有一个带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位),以便我可以访问数据,我将不胜感激。