1

如前一个问题中所述,我尝试将数据(又名 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.
4

2 回答 2

0

如果您写的简单选择不起作用,则问题在于链接服务器的安全配置以及您的用户在那里获得的权限。

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

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].

于 2013-10-31T12:03:02.077 回答
-1

如果您使用的是环回链接服务器(链接服务器指的是同一服务器中的同一数据库),请参考下面提到的链接:

与环回链接服务器的事务 - 锁定问题

如果不是这样,是微软提供的解决方案。

于 2016-02-27T05:00:15.187 回答