前几天,我在此板块发了一个请教贴,内容如下:
各位老师,请教个问题,(本地服务器环境:windows2000 server;Sqlserver2000) 
我因业务需要从远程服务器上的数据库同步数据到本地。 
采取了以下方法, 
1、在本地建链接服务器 
exec sp_addlinkedserver @server='kksv',@provider='SQLOLEDB',@srvproduct='',@datasrc='kksv' 
exec sp_addlinkedsrvlogin @rmtsrvname='NewSrv',@useself='FALSE',@rmtuser='sa',@rmtpassword='123' 
2、在本地建立视图,指向链接服务器 
create view dbo.v_KK_PDT_test as select * from NewSrv.DB_KK.dbo.PDT 
go 
create view dbo.v_KK_PDT_A_test as select * from NewSrv.DB_KK.dbo.t_KK_PDT_A 
go 
3、利用远程视图查询数据 
select PRD_NO, NAME, SNM, SPC, MRK, DFU_UT, UT1, SPC_TAX, REM, IDX1, convert(int, p.UP_DD) 
from v_KK_PDT_test as p, v_KK_PDT_A_test as s 
where p.PRD_NO = s.PaperNO collate Chinese_PRC_CS_AS_KS_WS 
and convert(int, p.UP_DD) <> s.LastUpdate
在跑查询语句的时候,发现查单个视图没问题,但如果用视图关联,就会造成time out。 
百思不得其解,特来请教大家。
经过N次的调试,发现把text类型的字段改为varchar,脚本就可以跑了,但事实证明,我太天真,
脚本可以一句一句跑,但放在存储过程中,就依然time out。
再进一步研究,发现有可能是问题的真正根源:事务。
因为我把事务的相关语句(BEGIN TRAN...COMMIT TRAN )屏弊掉,存储过程就可以正常跑起来了。
正常情况下,我可以不用事务,但是,我们还是需要事务在出错的时候来帮忙。
所以,续发此贴,望能保留事务,但又不影响存储过程。
谢谢。