В Sql Server 2008 r2 у меня есть таблица с именем Emp, и я пытаюсь обновить некоторые значения в транзакции (внешний тран), теперь после обновления и перед фиксацией я начал другую транзакцию, в которой я попытался выбрать данные из той же таблицы (Emp), но через петлевой сервер.
Tsql выглядит так:
USE MASTER
GO
EXEC sp_addlinkedserver @server = N'loopback',@srvproduct=N'',@provider = N'SQLNCLI', @datasrc = @@SERVERNAME,@catalog = 'MstrDtl'
GO
EXEC sp_serveroption loopback,N'remote proc transaction promotion','FALSE'
Go
create SYNONYM loopy FOR loopback.MstrDtl.dbo.Emp
use MstrDtl
BEGIN TRAN OuterTran
BEGIN
update table dbo.Emp set Salary = 123456 where Name='abcdx'
BEGIN TRAN InnerTran
select Salary from loopy where Name = 'abcdx'
COMMIT TRAN InnerTran
ROLLBACK TRAN OuterTran
END
поэтому у меня два вопроса:
- могу ли я получить старые значения (затронутые строки с обновлением) в запросе для обратной связи внутри InnerTran, используя этот способ?
- запрос никогда не останавливается, есть идеи?