在server1上的查询分析器中执行
drop proc xxx
然后再执行
set ANSI_NULLS on
set ANSI_WARNINGS on
go
create proc xxx
as
begin
insert into server2.数据库名.dbo.表名
(jj,bb)
select a.jj,b.bb from 表名1 a,表名2 b where a.id=b.id
end 后 在server1上用DELPHI写的程序读xxx 存储过程 结果还是报
异类查询要为连接设置 ANSI_NULLS 和ANSI_WARNINGS 选项.这将确保一致的查询语义,请启用这些选项,然后重新发出查询
这个错误信息!
drop proc xxx
然后再执行
set ANSI_NULLS on
set ANSI_WARNINGS on
go
create proc xxx
as
begin
insert into server2.数据库名.dbo.表名
(jj,bb)
select a.jj,b.bb from 表名1 a,表名2 b where a.id=b.id
end 后 在server1上用DELPHI写的程序读xxx 存储过程 结果还是报
异类查询要为连接设置 ANSI_NULLS 和ANSI_WARNINGS 选项.这将确保一致的查询语义,请启用这些选项,然后重新发出查询
这个错误信息!
view1: Cann't perform this operation on a closed dataset.
不是存储过程的问题 !
考虑 是insert 语句 所以就要考虑加上事物 也就是分布式事物处理 .server1和server 2都打开了 ms dtc 服务
(我的 操作系统是 winxp pro sp2 SQL2000 PRO ) 我的存储过程如下
CREATE proc xxx
as
begin distributed tran insert into server2.数据库.dbo.库表名
(jj,bb)
SELECT a.jj,b.bb
FROM 表1 a,表2 b where a.id=b.id select '倒数据成功!!' as '提示' if @@error = 0
commit tran
else
rollback tran
在server1 的查询分析器中执行 exec xxx 提示:服务器: 消息 7391,级别 16,状态 1,过程 UP_FD_SCSJ,行 29
该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。
[OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ]
OLE DB 错误跟踪[OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a]。
SERVER2 操作系统是 win2003 server SQLSERVER 企业版 所在的组是 admi我在server1上
第一:
控制面板->管理工具->组件服务-> 组件服务->计算机->我的电脑 右键我的电脑
->属性->MSDTC->安全性配置 选择 远程DTC访问、允许远程客户端、允许远程管理、允许入站、
允许出站、不要求进行验证
第二:
在SQLSERVER 中将 自动运行ms dtc(d) 选上 否则每次开机或重起都要去启动MSDTC 在server2上
第一:打开“管理工具”的“组件服务”。
a. 浏览至"启动管理工具"。 b. 选择"组件服务"。 c. 展开"组件服务"树,然后展开"我的电脑"。 d. 右键单击"我的电脑",然后选择"属性"。 在 MSDTC 选项卡中,确保选中了下列选项:
网络 DTC 访问 网络管理 网络事务XA 事务
另外,"DTC 登录帐户"一定要设置为"NT Authority\NetworkService"。4、重启MS DTC服务。
第二: 在SQLSERVER 中将 自动运行ms dtc(d) 选上 否则每次开机或重起都要去启动MSDTC
这样我的分布式事务就可以正常执行了,结果OK! 如果哪里交代的不清楚 请见谅啊 ,一晚上没睡了 头有点晕