Sql server 2008 r2 针对主数据库运行的SQL Server OPENQUERY

Sql server 2008 r2 针对主数据库运行的SQL Server OPENQUERY,sql-server-2008-r2,sql-server-2016,linked-server,openquery,Sql Server 2008 R2,Sql Server 2016,Linked Server,Openquery,我有以下声明 SELECT * FROM OPENQUERY(MyLinkedServer,'SELECT * FROM Table') 这是失败的错误 已返回链接服务器“MyLinkedServer”的OLEDB提供程序“SQLNCLI10” 消息“无法完成差异准备” 当我尝试 SELECT * FROM OPENQUERY(MyLinkedServer,'SELECT DB_NAME()') 我可以看到这些语句是针对链接服务器上的主数据库运行的 我试过了 SELECT * FROM OP

我有以下声明

SELECT * FROM OPENQUERY(MyLinkedServer,'SELECT * FROM Table')
这是失败的错误

已返回链接服务器“MyLinkedServer”的OLEDB提供程序“SQLNCLI10” 消息“无法完成差异准备”

当我尝试

SELECT * FROM OPENQUERY(MyLinkedServer,'SELECT DB_NAME()')
我可以看到这些语句是针对链接服务器上的主数据库运行的

我试过了

SELECT * FROM OPENQUERY(MyLinkedServer,'USE MyDB; SELECT * FROM Table')
但这也告诉我,这份声明无法准备

如何控制OPENQUERY运行所针对的链接服务器上的哪个数据库


我正在运行查询的SQL server版本是2008R2,远程服务器是2016SP1。您可以使用三个部分名称:

SELECT * FROM OPENQUERY(MyLinkedServer,'SELECT * FROM MyDB.schema_name.Table')

您可以使用三部分名称:

SELECT * FROM OPENQUERY(MyLinkedServer,'SELECT * FROM MyDB.schema_name.Table')

如果您只打算在远程服务器上使用一个DB,则可以在链接服务器设置中设置目录(要使用的默认DB)。否则,如果您只打算在远程服务器上使用一个DB,则可以在链接服务器设置中设置目录(要使用的默认DB)。否则见