在连接到SQL 2000数据库的SQL 2008上的链接服务器上运行查询时出错

我在链接的服务器上执行一个简单的查询,该服务器使用一个在这两个服务器上映射的用户这个错误。 我尝试了testing链接服务器连接工作正常。

令人困惑的是我在WEB上偶然发现的一个问题就是尝试使用OPENQUERY。

当我执行我的查询不使用OPENQUERY方法时返回以下错误。

链接服务器“xxx.xxx.xx”的OLE DB提供程序“SQLNCLI10”返回消息“未指定的错误”。

链接服务器“xxx.xxx.xx”的OLE DB提供程序“SQLNCLI10”返回消息“完成此操作所需的存储过程在服务器上找不到,请联系您的系统pipe理员。”

消息7311,级别16,状态2,行2无法获取链接服务器“192.168.9.5”的OLE DB提供程序“SQLNCLI10”的架构行集“DBSCHEMA_TABLES_INFO”。 提供程序支持该接口,但在使用时会返回失败代码。

非常感谢

它试图运行下面的存储过程:

exec [mybase]..sp_tables_info_rowset_64 N'mytable', N'dbo', NULL 

…但它不存在于32位版本。 您可以使用该sp名称创build一个调用sp_tables_info_rowset 32​​位版本的包装器。

我相信这是在2000年和2005年的服务包中修复的,所以如果可能的话,这是可以应用的。

下面的脚本是我用来创build所需的存储过程sp_tables_info_rowset_64,它是sp_tables_info_rowset的包装器,它为我解决了相同的错误。 在SQL Server 2000框中运行它。

 use master go create procedure sp_tables_info_rowset_64 @table_name sysname, @table_schema sysname = null, @table_type nvarchar(255) = null as declare @Result int set @Result = 0 exec @Result = sp_tables_info_rowset @table_name, @table_schema, @table_type go grant exec on sp_tables_info_rowset_64 to public