首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

存储过程中使用 database link,该怎么处理

2012-01-22 
存储过程中使用 database links: selectaafromtable1@aaa executeimmediatesintoRst调用这个存储过程的

存储过程中使用 database link
s:= 'select   aa   from   table1@aaa ';
execute   immediate   s     into   Rst;


调用这个存储过程的时候怎么提示


ORA-02041:   客户数据库未开始一个事务处理\nORA-06512


再pl/sql工具中执行是没有问题的

[解决办法]
估计要求启动一个分布式的事务。
[解决办法]
改成这样不好吗?
s:= 'select aa from table1@aaa into Rst ';
execute immediate s ;

[解决办法]
启用分布式事务:
1、运行 regedt32,浏览至 HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC。
添加一个 DWORD 值 TurnOffRpcSecurity,值数据为 1。
2、重启MS DTC服务。
3、打开“管理工具”的“组件服务”。
a. 浏览至 "启动管理工具 "。
b. 选择 "组件服务 "。
c. 展开 "组件服务 "树,然后展开 "我的电脑 "。
d. 右键单击 "我的电脑 ",然后选择 "属性 "。
在 MSDTC 选项卡中,确保选中了下列选项:
网络 DTC 访问
网络管理
网络事务
XA 事务
另外, "DTC 登录帐户 "一定要设置为 "NT Authority\NetworkService "。
4、重启MS DTC服务。
5、再次运行 regedt32,浏览至 HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC,然后删除 TurnOffRpcSecurity 项。
[解决办法]
建議樓主到百度www.baidu.com
搜一搜“ORA-02041: 客户数据库未开始一个事务处理\nORA-06512”
有很多類似樓主的問題

热点排行