转:SQL跨域调用远程SP返回的纪录集遇MSDTC分布式异常的处理

本文提供了解决MSDTC异常的具体步骤,并介绍了两种无需MSDTC即可调用远程存储过程的方法,包括在远程服务器上创建、截断及插入表的SQL语句。
一)针对MSDTC异常,通常解决办法如下,      首先确保在控制面板-添加或删除程序-添加/删除Windows组件-Application server中确保DTC可用.      Step1,对处于不同域中的两台server,更新 c:"windows"system32"drivers"etc"hosts ,分别添加对方的IP,Computer Name.        Step2,单击菜单,进入运行选项,输入 ‘dcomcnfg’ ,将会显示下面界面.          Step3,选择下图红色区域项.          Step4,按下图进行安全配置

     Step5,点击确定后,系统将自动重启MSDTC,SQL Server等服务.

 

二)SQL调用远程SP的纪录集,不使用MSDTC

--------------------------------------------------------------------------------------------------------
--
-预备条件:创建链接服务器
exec sp_addlinkedserver  'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'
exec sp_serveroption 'srv_lnk','rpc out','true'  --这个允许调用链接服务器上的存储过程

--------------------------------------------------------------------------------------------------------
--
-方法一
--
----Truncate/Create/Insert table at remote server 
Declare @iSQL nvarchar(300)
if Exists(select * from [172.26.16.4].SMTOTHER.dbo.sysobjects where name =N'__TempCheckResult' AND type=N'U'
Begin
    
set @iSQL=N'Truncate Table __TempCheckResult'
    
EXEC [172.26.16.4].SMTOTHER.dbo.sp_executesql @iSQL
End
Else
Begin
    
set @iSQL=N'Create Table __TempCheckResult(iResult varchar(50))'
    
EXEC [172.26.16.4].SMTOTHER.dbo.sp_executesql @iSQL
End

set @iSQL=N'Insert into __TempCheckResult Exec [CopyPackingSNforM2CheckBySN] '+''''+'W884103RJ5VSA'+''''
EXEC [172.26.16.4].SMTOTHER.dbo.sp_executesql @iSQL

select *  from [172.26.16.4].SMTOTHER.dbo.__TempCheckResult

---------------------------------------------------------------------------------------------------------------
--
-方法二
--
----Truncate/Create/Insert table at remote server  for SQL2005
Declare @iSQL nvarchar(300)
if Exists(select * from [172.26.16.4].SMTOTHER.dbo.sysobjects where name ='__TempCheckResult' AND type=N'U'
Begin
    
set @iSQL=N'Truncate Table SMTOTHER.dbo.__TempCheckResult'
    
EXECUTE(@iSQL) AT [172.26.16.4]
End
Else
Begin
    
set @iSQL=N'Create Table SMTOTHER.dbo.__TempCheckResult(iResult varchar(50))'
    
EXECUTE(@iSQL) AT [172.26.16.4]
End

set @iSQL=N'Insert into SMTOTHER.dbo.__TempCheckResult Exec SMTOTHER.dbo.[CopyPackingSNforM2CheckBySN] '+''''+'W884103RJ5VSA'+''''
EXECUTE(@iSQL) AT [172.26.16.4]

select *  from [172.26.16.4].SMTOTHER.dbo.__TempCheckResult

转载于:https://www.cnblogs.com/wliang22/archive/2009/09/15/1566911.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值