因为是远程服务器数据关联的问题,如果调用链接服务器对远程服务器的数据库里表取数据,会慢很多,
所以想通过执行远程服务器的存储过程把结果集返回到本地的服务器,这样速度应该会快很多!例子:exec [192.168.1.200].Database01.dbo.存储过程名(我这样是行不通的,但是意思就是这样)
把结果集返回给本地的服务器(也是存储过程,可以是临时表),请问如何实现?谢谢!
所以想通过执行远程服务器的存储过程把结果集返回到本地的服务器,这样速度应该会快很多!例子:exec [192.168.1.200].Database01.dbo.存储过程名(我这样是行不通的,但是意思就是这样)
把结果集返回给本地的服务器(也是存储过程,可以是临时表),请问如何实现?谢谢!
insert #t exec [192.168.1.200].Database01.dbo.存储过程名 参数
注意,链接服务器的RPC必须打开
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','10.100.1.38'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa',''
exec sp_serveroption 'srv_lnk','rpc out','true' --这个允许调用链接服务器上的存储过程
go
--查询示例
exec srv_lnk.DingFangTest.dbo.Show_User_Rights '266','frmOrderFax'
go
--以后不再使用时删除链接服务器
exec sp_dropserver 'srv_lnk','droplogins' http://hi.baidu.com/zsjfd/blog/item/ec61c5d688477c2906088b4e.html
as
begin
select * from ab
end
exec sp_serveroption xie,'data access',true 设置自已的服务器为链接服务器select * into #1 from openquery(xie,'Exec test1.dbo.a') 后面访问的时候必须要用test1.dbo.a访问
以上方法用来处理把存储过程返回的结果与别外一个表相连
insert #Temp2
exec [192.168.1.200].Database01.dbo.Production001
select * from #Temp2
Drop Table #Temp2 执行不成功啊!#Temp2的字段与exec [192.168.1.200].Database01.dbo.Production001返回的结果集的字段名、长度、类型及顺序等都是一样的。
exec [192.168.1.200].Database01.dbo.Production001 执行成功!
请问是哪里的问题?谢谢!!!
--try:
Create Table #Temp2(col列表)
insert #Temp2 exec [192.168.1.200].Database01..Production001
出现如下的提示:OLE DB provider "SQLNCLI" for linked server "192.168.1.200" returned message "此事务已明地或暗地被确认或终止".消息 7391,级别 16,状态 2,第 2 行
The operation could not be performed because OLE DB provider "SQLNCLI" for linked server "192.168.1.200" was unable to begin a distributed transaction.
set xact_abort on
begin distributed tran
Create Table #Temp2(col列表)
insert #Temp2 exec [192.168.1.200].Database01..Production001commit tran
insert #Temp2 exec [192.168.1.200].Database01..Production001--添加链接服务器
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','10.100.1.38'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa',''
exec sp_serveroption 'srv_lnk','rpc out','true' --这个允许调用链接服务器上的存储过程
go Create Table #Temp2(col列表)
insert #Temp2 exec srv_lnk.Database01.dbo.Production001
1、已经在数据库服务器里添加了链接服务器;
2、已经设置好了用户名,密码,远程服务器及数据库名等。所以
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','10.100.1.38'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','' 没有必要再次执行!执行以下SQL语句:
Create Table #Temp2(col列表)
insert #Temp2 exec srv_lnk.Database01.dbo.Production001问题依然!谢谢!!!
未能找到 OLE DB 提供程序 '127.0.0.1' 的注册表项。
OLE DB 错误跟踪[Non-interface error: Provider not registered.]。什么错?
就是把远程服务器的SQL存储过程的执行结果存储为一个表,然后在本地服务器里调用那个表的结果
这样就没有那么麻烦了!