- 一)针对MSDTC异常,通常解决办法如下,
首先确保在控制面板-添加或删除程序-添加/删除Windows组件-Application server中确保DTC可用.
Step1,对处于不同域中的两台server,更新 c:"windows"system32"drivers"etc"hosts ,分别添加对方的IP,Computer Name.




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
---预备条件:创建链接服务器
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