我在A服务器向B服务器止传数据时,我加上了事务,比如:
declare @ErrorMessage varchar(8000),@ErrorSeverity int, @ErrorState int,@ErrorNumber int,@OperType int
set xact_abort on
BEGIN TRANSACTION database_upload
begin try insert into openquery(linkremote, 'select code,billcode from b.dbo.t_wh_billofdocument_bk')
select code,billcode from t_wh_billofdocument_bk
end try
begin catch
SELECT @ErrorMessage = ERROR_MESSAGE(), @ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE(),@ErrorNumber=ERROR_NUMBER()
if @ErrorSeverity>18 or @ErrorSeverity<0
set @ErrorSeverity=16
if @ErrorState>127 or @ErrorState<1
set @ErrorState=1
begin try
ROLLBACK TRANSACTION database_upload
end try
begin catch
end catch
raiserror (@ErrorMessage, @ErrorSeverity,@ErrorState)
--return @ErrorNumber
end catch
begin try
COMMIT TRANSACTION database_upload
end try
begin catch
end catch 只要我每开服务器A和B时,我在A向B传数据,就是我上面写的语句,都会提示A服务器的MSDTC不可用,和B服务器的MSDTC不可用,其实A服务器和B服务器的MSDTC确实已经启用了,而且在“控制面板”“管理工具”“组件服务”,打开“组件服务”窗口,“组件服务”“计算机”“我的电脑”,右键“属性”“MSDTC”,勾选“使用本地协调器”,单击“安全性配置”,弹出“安全配置”窗口,勾选“网络DTC访问”、“允许远程客户端”、“允许远程管理”、“允许入站”、“允许出站”、“不要求进行验证”、“启用事务Inernet协议(TIP)事务”和“启用XA事务”(“允许入站”和“允许出站”据具体情况设置,客户端机器必须“允许出站”,服务器端机器必须“允许入站”),DTC登陆账号必须是“NT AUTHORITYNetworkService”,这些设置我都做了。还是提示MSDTC不可用,后来,我用手动重新启动了一下A服务器和B服务器的MSDTC,然后在A服务器执行上面的代码,这样也可以通过的。
我想问一下,有没有其它的设置让它不要老是提示MSDTC不可用,或者我在A服务器用sql语句来停止和启动A服务器的MSDTC,和在A服务器通过sql语句来停止和启动B服务器的MSDTC
declare @ErrorMessage varchar(8000),@ErrorSeverity int, @ErrorState int,@ErrorNumber int,@OperType int
set xact_abort on
BEGIN TRANSACTION database_upload
begin try insert into openquery(linkremote, 'select code,billcode from b.dbo.t_wh_billofdocument_bk')
select code,billcode from t_wh_billofdocument_bk
end try
begin catch
SELECT @ErrorMessage = ERROR_MESSAGE(), @ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE(),@ErrorNumber=ERROR_NUMBER()
if @ErrorSeverity>18 or @ErrorSeverity<0
set @ErrorSeverity=16
if @ErrorState>127 or @ErrorState<1
set @ErrorState=1
begin try
ROLLBACK TRANSACTION database_upload
end try
begin catch
end catch
raiserror (@ErrorMessage, @ErrorSeverity,@ErrorState)
--return @ErrorNumber
end catch
begin try
COMMIT TRANSACTION database_upload
end try
begin catch
end catch 只要我每开服务器A和B时,我在A向B传数据,就是我上面写的语句,都会提示A服务器的MSDTC不可用,和B服务器的MSDTC不可用,其实A服务器和B服务器的MSDTC确实已经启用了,而且在“控制面板”“管理工具”“组件服务”,打开“组件服务”窗口,“组件服务”“计算机”“我的电脑”,右键“属性”“MSDTC”,勾选“使用本地协调器”,单击“安全性配置”,弹出“安全配置”窗口,勾选“网络DTC访问”、“允许远程客户端”、“允许远程管理”、“允许入站”、“允许出站”、“不要求进行验证”、“启用事务Inernet协议(TIP)事务”和“启用XA事务”(“允许入站”和“允许出站”据具体情况设置,客户端机器必须“允许出站”,服务器端机器必须“允许入站”),DTC登陆账号必须是“NT AUTHORITYNetworkService”,这些设置我都做了。还是提示MSDTC不可用,后来,我用手动重新启动了一下A服务器和B服务器的MSDTC,然后在A服务器执行上面的代码,这样也可以通过的。
我想问一下,有没有其它的设置让它不要老是提示MSDTC不可用,或者我在A服务器用sql语句来停止和启动A服务器的MSDTC,和在A服务器通过sql语句来停止和启动B服务器的MSDTC
法1.为何不建立链接服务器呢,这样可以相互访问的
法2.在上传数据前,测试连接对方服务器,如果连接成功,通过xml传送到对方服务器执行insert 或update语句,连接不成功则提示不能操作