У меня одинаковая структура локальных и удаленных баз данных, и я подключаюсь к удаленной базе данных, используя связанный сервер.моя локальная база данных - SQL2000, а удаленная - SQL2008. Моя локальная таблица:
tbl_name
Id Name flag
1 Raymond 1
2 Sara 1
3 Souzan 2
Моя удаленная таблица
tbl_name
Id Name
Теперь я хочу вставить каждую запись со значением falg field
значение = 1 вудаленной таблицы, а затем удалить вставленные записи в локальной базе данных.
create proc TransferInsertedRecords
as
begin
create temp @table
(
id int,
name nvarchar(10)
)
insert into @temp
select id,name from tbl_name
where flag=1
Insert into RemoteServer.dbo.Worker.tbl_Names.name
values select name from @temp
delete from t1
from tbl_name t1
inner join @temp t2
on t1.id=t2.id and flag=1
end
У меня есть задание, которое запускает эту процедуру каждые 5 минут.Как я могу быть уверен, что каждая вставленная запись в удаленной базе данных будет удалена в локальной базе данных?Я имею в виду потерю связи.Предположим, что некоторые данные вставлены в удаленную базу данных, но перед тем, как вставить остальные данные и удалить их в локальной базе данных, соединение теряется.
Должен ли я использовать DISTRIBUTED TRANSACTION
, если да, куда я должен поместить операторы COMMIT TRANSACTION or ROLLBACk
.