使用链接的服务器返回的错误 - “无法获取OLE DB提供程序的架构行集”(Using linked

2019-10-18 18:59发布

我试图又名ETL从一个SQL服务器移动到另一个数据是前一个问题中提到的- 从一列数据复制到另一列 。 现在,当我试图执行一个查询我得到一个错误。

查询 -

INSERT INTO [Target_server].[Target_DB1].[dbo].[Target_Table1](Target_Column1)
SELECT Source_Column222
FROM [Source_server].[Source_DB1].[dbo].[Source_Table1]
WHERE Source_Column1 = 'ID7162'

错误 -

OLE DB provider "SQLNCLI" for linked server "MYLINKEDSERVER" returned message "Unspecified error".
OLE DB provider "SQLNCLI" for linked server "MYLINKEDSERVER" returned message "The stored procedure required to complete this operation could not be found on the server. Please contact your system administrator.".
Msg 7311, Level 16, State 2, Line 1
Cannot obtain the schema rowset "DBSCHEMA_TABLES_INFO" for OLE DB provider "SQLNCLI" for linked server "MYLINKEDSERVER". The provider supports the interface, but returns a failure code when it is used.

Answer 1:

如果你写了简单的选择不工作,问题是在连接服务器和权限的用户那里获得的安全配置。

在此,当你执行你的查询,你并不需要为两个部分指定服务器名称和数据库名称 - 源和目标。 您只需执行目标服务器和目标数据库上查询。 在这种情况下,您的查询,而不是

INSERT INTO [Target_server].[Target_DB1].[dbo].[Target_Table1](Target_Column1)
SELECT Source_Column222
FROM [Source_server].[Source_DB1].[dbo].[Source_Table1]
WHERE Source_Column1 = 'ID7162'

将如下所示:

INSERT INTO [dbo].[Target_Table1](Target_Column1)
SELECT Source_Column222
FROM [Source_server].[Source_DB1].[dbo].[Source_Table1]
WHERE Source_Column1 = 'ID7162'

你需要在服务器上打开的连接[Target_server]和数据库[Target_DB1] 另外,链接服务器的安全性需要对被检查[Target_server]反对[Source_server]



Answer 2:

如果使用的是环回链接服务器(链接服务器指的在同一个服务器的同一个数据库),然后参照以下提到的链接:

成交环回链接服务器-锁定问题

如果情况并非如此, 这是由微软提供的解决方案。



文章来源: Using linked server returns error - “Cannot obtain the schema rowset for OLE DB provider”