如何查询加入本地数据库和链接服务器数据库
How to make a query to join local database and linked server database
我创建了一个链接服务器并将名称命名为test
。
当我写
这样的查询时
select *
from openquery(test, 'select * from account')
它工作正常但是当我 运行 这个查询时:
select *
from openquery(test, 'select * from account join test1 on account.accountid=test1.student_id')
它抛出一个错误
OLE DB provider "SQLNCLI10" for linked server "test" returned message
"Deferred prepare could not be completed.".
我不知道加入这两个服务器我做错了什么。
您可以试试:
select * from test.master.dbo.account
join
test.master.dbo.test1
on account.accountid=test1.student_id
同样:
select * from test.master.dbo.account
当 2 个服务器(链接服务器和本地服务器)中的任何一个使用 ms sql 2012 及更高版本时。然后在创建链接服务器时确保在提供程序下拉列表中我们 select SQL Server Native Client 11.0。我一直收到错误的原因是因为在 Provider 下我 selected SQL Server Native Client 10.0 和我的链接服务器正在使用 sql2008 而我的本地服务器是 sql2012
解决方案
select * from test.account.dbo.account m
left join
test t
on m.accountid=t.student_id
我创建了一个链接服务器并将名称命名为test
。
当我写
这样的查询时select *
from openquery(test, 'select * from account')
它工作正常但是当我 运行 这个查询时:
select *
from openquery(test, 'select * from account join test1 on account.accountid=test1.student_id')
它抛出一个错误
OLE DB provider "SQLNCLI10" for linked server "test" returned message "Deferred prepare could not be completed.".
我不知道加入这两个服务器我做错了什么。
您可以试试:
select * from test.master.dbo.account
join
test.master.dbo.test1
on account.accountid=test1.student_id
同样:
select * from test.master.dbo.account
当 2 个服务器(链接服务器和本地服务器)中的任何一个使用 ms sql 2012 及更高版本时。然后在创建链接服务器时确保在提供程序下拉列表中我们 select SQL Server Native Client 11.0。我一直收到错误的原因是因为在 Provider 下我 selected SQL Server Native Client 10.0 和我的链接服务器正在使用 sql2008 而我的本地服务器是 sql2012
解决方案
select * from test.account.dbo.account m
left join
test t
on m.accountid=t.student_id