建立了如下的存储过程
create procedure pr_qrebateamou as
--每个季度的第一天获取优惠绑定的信息
begin
--if substring(convert(varchar(10),getdate(),121),9,2) = '01' and substring(convert(varchar(10),getdate(),121),6,2) in ('01','04','07','10')
--begin
begin tran t1
--删除本季度内的数据
delete from qrebateamou
--从一卡通信息中读入信息
insert into qrebateamou
select
houseidno,
sum(
case grdid
when 1000 then 1
when null then 1
when 0 then 1
else 2
end) as amount,
null
from
[10.11.0.24].ecarddb24.dbo.VW_HrmsEmp
group by houseidno
commit tran t1
--end
end在查询分析器中单独运行
insert into qrebateamou
select
houseidno,
sum(
case grdid
when 1000 then 1
when null then 1
when 0 then 1
else 2
end) as amount,
null
from
[10.11.0.24].ecarddb24.dbo.VW_HrmsEmp
group by houseidno
提示没有任何问题,但如果执行存储过程,出现如下提示:
服务器: 消息 7391,级别 16,状态 1,过程 pr_qrebateamou,行 28
该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。
[OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ]
OLE DB 错误跟踪[OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a]。注意:两台机器的MSDTC服务都已经启动,组件服务中的网络DTC访问,以及启用XA事务 都已选上,端口135已经打开,为什么
create procedure pr_qrebateamou as
--每个季度的第一天获取优惠绑定的信息
begin
--if substring(convert(varchar(10),getdate(),121),9,2) = '01' and substring(convert(varchar(10),getdate(),121),6,2) in ('01','04','07','10')
--begin
begin tran t1
--删除本季度内的数据
delete from qrebateamou
--从一卡通信息中读入信息
insert into qrebateamou
select
houseidno,
sum(
case grdid
when 1000 then 1
when null then 1
when 0 then 1
else 2
end) as amount,
null
from
[10.11.0.24].ecarddb24.dbo.VW_HrmsEmp
group by houseidno
commit tran t1
--end
end在查询分析器中单独运行
insert into qrebateamou
select
houseidno,
sum(
case grdid
when 1000 then 1
when null then 1
when 0 then 1
else 2
end) as amount,
null
from
[10.11.0.24].ecarddb24.dbo.VW_HrmsEmp
group by houseidno
提示没有任何问题,但如果执行存储过程,出现如下提示:
服务器: 消息 7391,级别 16,状态 1,过程 pr_qrebateamou,行 28
该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。
[OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ]
OLE DB 错误跟踪[OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a]。注意:两台机器的MSDTC服务都已经启动,组件服务中的网络DTC访问,以及启用XA事务 都已选上,端口135已经打开,为什么
SET XACT_ABORT ON
begin tran t1
....