求救!今天一天要做完30多个!用tsql从oracle导到sqlserver的讨论

solidpanther 2004-03-05 09:48:52
我们需要从oracle8里导入sqlserver一些数据,关于事务很迷惑,问题如下:
1,首先大家帮我检查以下导库的语句写法有什么不足,我30多个大概都是这种结构:
我们需要从oracle8里导入sqlserver一些数据,关于事务很迷惑,问题如下:
1,首先大家帮我检查以下导库的语句写法有什么不足,我30多个大概都是这种结构,我举个简单的例子:
因为我需要将数据导入到sqlserver中,然后修改oracle的数据,所以我要用事务,而
大多数 OLE DB 提供程序,隐性或显式事务中的数据修改语句必须将 XACT_ABORT 设置为 ON

--MyOra为oracle库,yewu为用户
SET XACT_ABORT ON
BEGIN TRAN
select * into mysqlserverTable from MyOra..YEWU.MyOraTable
insert into MyOra..YEWU.A values ('sd',3,'2002-2-2')
update MyOra..YEWU.A set a='jjjjjj' where ......
IF @@ERROR <>0 BEGIN
ROLLBACK TRAN
END
ELSE BEGIN
COMMIT TRAN
END
SET XACT_ABORT OFF
select * from MyOra..YEWU.A

2,如果出现错误了,比如那个insert语句里我把时间写成“200ddd2-2-2”,就会报错,然后!
不管错的语句还是对的语句都过不去了!一检查!oracle里竟然有锁!测试了老半天,在oracle里
杀锁杀进程,不是马上能杀掉,怎么回事啊,这种问题怎么避免呢(我是指在事务中出现错误,
没有提交事务就会出现死锁)?有没有办法解决或者最大限度的降低出错率呢?

3,锁怎么办呢?我在oracle里建立了一个plsql,有时候可以杀掉锁,有时候竟然提示“不能取消当前进程!”!
大侠们救我 啊!因为不是我要用这些导库脚本,而是用户以后定期或不定期手工用这些脚本导!
他杀不掉锁我还要跑过去的!我写的语句如下,请改进:
declare
cursor KillCur is
SELECT C.SID,
C.SERIAL#
FROM ALL_OBJECTS A, V$LOCKED_OBJECT B, SYS.GV_$SESSION C
WHERE ( A.OBJECT_ID = B.OBJECT_ID )
AND (B.PROCESS = C.PROCESS )
ORDER BY 1,2;
V_SID varchar(100);
v_SERIAL varchar(100);
i integer;
cnum1 INTEGER;
junk NUMBER;
begin
OPEN KillCur;
FETCH KillCur INTO V_SID,v_SERIAL;
WHILE KillCur%FOUND LOOP
cnum1 := dbms_sql.open_cursor;
dbms_sql.parse(cnum1, 'alter system KILL SESSION '''||V_SID||', '||v_SERIAL||'''', dbms_sql.native);
junk := dbms_sql.execute(cnum1);
dbms_sql.close_cursor(cnum1);
FETCH KillCur INTO V_SID,v_SERIAL;
END LOOP;
CLOSE KillCur;
end;
...全文
52 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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