读书人

请教怎么使用openrowset来根据本地数据

发布时间: 2012-01-18 00:23:26 作者: rapoo

请问如何使用openrowset来根据本地数据来更新远程数据?
目前我要做一个操作,就是将远程数据导入本地数据,然后再删除远程数据中已经导入的记录。

本地数据表和远程数据表的结构一样的,使用相同的主键。

但我在使用openrowset语句的过程中有点问题:

下面这句将数据从远程导到本地的没有问题

insert into T_HR192 (

SK01,
SK02,
SK03,
SK04,
SK05,
SK06,
SK07,
SK08,
SK09,
SK10,
SK11,
SK12
)
select
rtrim(abc.SK01),
rtrim(abc.SK02),
rtrim(abc.SK03),
rtrim(abc.SK04),
rtrim(abc.SK05),
rtrim(abc.SK06),
rtrim(abc.SK07),
rtrim(abc.SK08),
rtrim(abc.SK09),
rtrim(abc.SK10),
rtrim(abc.SK11),
rtrim(abc.SK12)
from openrowset( 'SQLOLEDB ', 'servername '; 'sa '; 'password ',ID_Eatery.dbo.S_SK) abc
left join
T_HR192 abd
on abc.SK03 = abd.SK03
and abc.SK07 = abd.SK07
and abc.SK08 = abd.SK08
where
abd.SK03 is null
and abd.SK07 is null
and abd.SK08 is null
and abc.SK07 > cast((@startday + ' 15:30:00 ') as datetime)
and abc.SK07 <= @today
order by
abc.SK07 asc,
abc.SK08 asc,
abc.SK03 asc

但是删除远程数据有点问题

delete openrowset( 'SQLOLEDB ', 'servername '; 'sa '; 'password ',ID_Eatery.dbo.S_SK) abc
from T_HR192 abd
where on abc.SK03 = abd.SK03
and abc.SK07 = abd.SK07
and abc.SK08 = abd.SK08

请问怎么通过本地数据与远程数据的比对删除远程数据???


[解决办法]
select * into #t from openrowset( 'sqloledb ', 'ip '; 'sa '; ' ',select * from dbo.t)a


delete
openrowset( 'sqloledb ', 'ip '; 'sa '; ' ',select * from dbo.t)a
where exists (select 1 from #t where a.id=id)
[解决办法]
select * into #t from openrowset( 'sqloledb ', 'ip '; 'sa '; ' ',select * from .dbo.t)a


delete
openrowset( 'sqloledb ', 'ip '; 'sa '; ' ',select * from .dbo.t)a
where exists (select 1 from #t where a.id=id)

读书人网 >SQL Server

热点推荐