解決不了了﹐快點來救命呀

shinesky 2005-07-16 05:20:56
我有一個存儲過程en_knit_qty_by_lot_up﹐存儲過程里面有用到許多其它服務器上的數據﹐
現在我想將這個過程的最終結果集insert到另外一個臨時表中去﹐我的做法是

create table #test(combo_seq smallint, color_code char(15), color_desc char(30), lot char(15), net_qty numeric(9, 2), size_id char(10), qty int, size_seq int)
insert into #test(combo_seq, color_code, color_desc, lot, net_qty, size_id, qty, size_seq)
exec en_knit_qty_by_lot_up @lot_no
但是出現錯誤﹕
The operation could not be performed because the OLE DB provider 'SQLOLEDB' was unable to begin a distributed transaction.
[OLE/DB provider returned message: New transaction cannot enlist in the specified transaction coordinator. ]
OLE DB error trace [OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a].

這是為什么呢﹖該怎么解決呀﹖
另外對于這種將某一存儲過程的結果insert到另一表中的問題﹐還有其它的做法嗎﹖
...全文
163 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengfangfang 2005-07-18
  • 打赏
  • 举报
回复
分布式事务有许多限制
1.操作系统不能是windows98及其以下版本
2.数据库的版本也有限制,具体记不得了
3.在SQL的服务管理器中,需要将所有相关数据库的分布式事务协调器打开
shinesky 2005-07-18
  • 打赏
  • 举报
回复
up
up
up
up
shinesky 2005-07-18
  • 打赏
  • 举报
回复
up
shinesky 2005-07-18
  • 打赏
  • 举报
回复
wangdehao(找找找)
在存储过程中,要set xact_abort on

還是不行﹐出來同樣的錯誤呀﹐
各位趕快幫幫忙﹐要不能有其它的辦法也行﹐我想要的就是把某一存儲過程的結果集插入到一張臨時表中去﹗
wangdehao 2005-07-17
  • 打赏
  • 举报
回复
回复人: j9988(j9988)
一.A.不用事务,关用SELECT 语句.是否可以分布式查询?
B.LINKSERVER 在做分布式更新事务时不能对本机操作.(就是不能环回分布式事务)
C.DBCC TRACEON (3604, 7300)--用跟踪看更详细错误信息.

D.下载MS提供的DTCPing.exe 分装在两台机上,按README说明来运行它.看出错信息.
http://download.microsoft.com/download/complus/msdtc/1.7/nt45/en-us/DTCPing.exe
二.两台机的MSDTC是否都打开了.
三.MSDTC设置是否正确.
1.打开命令提示,运行"net stop msdtc",然后运行"net start msdtc"。
2.转至"组件服务管理工具"。
3.浏览至"启动管理工具"。
4.选择"组件服务"。
a.展开"组件服务"树,然后展开"我的电脑"。
b.右键单击"我的电脑",然后选择"属性"。
C.在 MSDTC 选项卡中,确保选中了下列选项: 网络 DTC 访问
网络管理
网络事务
XA 事务
e.另外,"DTC 登录帐户"一定要设置为"NT Authority\NetworkService"。
5.单击"确定"。这样将会提示您"MS DTC 将会停止并重新启动。
所有的依赖服务将被停止。请按'是'继续"。单击"是"继续。
6.单击"确定"关闭"我的电脑"属性窗口。
四.
MSDTC依赖于RPC,RPC使用的端口是135,测试135端口是否打开.是否有防火墙?如果有先关了防火墙.
telnet IP 135
如果是关闭的打开它.
五.
有的机由于各种原因),SQLOLEDB不能使用分布式事务,更改为"MSDASQL" 的ODBC方式联接.
使用RRAS而不是RAS.(控制面版--管理工具--远程服务管理器)
Check whether you are using Remote Access Server (RAS) to access remote servers. If so, make sure that you have implemented Routing RAS (RRAS). Linked server does not work on RAS because RAS allows only one way communication.
七.检查你的两台服务器是否在同一个域中.
如果不在同一个域中,是否建立可信任联接.
八.如果是WIN2000,升级到SP4
九.升级MDAC到2.6以上,最好是2.8.
十.要安装SQL的最新补丁: sp3a
'全部补丁的位置
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=9032f608-160a-4537-a2b6-4cb265b80766
'应该安装的补丁sql 2000 sp3
http://download.microsoft.com/download/d/d/e/dde427eb-0296-4eac-a47c-d11a66b03816/chs_sql2ksp3.exe
wangdehao 2005-07-17
  • 打赏
  • 举报
回复
在存储过程中,要set xact_abort on
shinesky 2005-07-17
  • 打赏
  • 举报
回复
up
jixiaojie 2005-07-16
  • 打赏
  • 举报
回复
up
shinesky 2005-07-16
  • 打赏
  • 举报
回复
我在enterprise manager->support services下看到Distributed Transaction Coordinator為啟動狀態﹐這是否說明我的分布式事務是啟動著的﹖
shinesky 2005-07-16
  • 打赏
  • 举报
回复
能詳細說一下如何啟動﹐在哪里啟動嗎﹐
我基礎較差
netcoder 2005-07-16
  • 打赏
  • 举报
回复
需要在相关的数据库服务器上启动分布式事务
使用
net start msdtc命令启动 即可

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧