Lembro-me da universidade que:
Por padrão, inserir, excluir e atualizar em 2 ou mais fontes de dados não pode ser participante de uma transação
Por favor, considere este código:
begin tran Insert2
begin try
Insert into Northwind.dbo.Categories ([CategoryName], [Description])
values ('New Category', 'Some Desc')
Insert into [TestDB].[dbo].[tblRate]([Year], [Month], [Rate])
values(1111, 1, null) <-- Failed because of null value
commit tran Insert2
end try
begin catch
rollback tran Insert2;
throw;
End catch
Não consigo criar um script que execute um Insert no Northwind
banco de dados e outro Insert não execute, TestDB
mas a reversão não pode excluir a linha inserida no Northwind
banco de dados.
Questão 1) As transações são gerenciadas sob um Instance
ou gerenciadas sob um Database
? Quero dizer, vários bancos de dados podem existir em uma determinada instância, o participante pode participar de uma transação?
Questão 2) Se TestDB
existir em outra instância do SQL Server (por exemplo MyServer2
), é possível incluí-lo em uma transação com a instância atual (por exemplo MyServer1
).
Você poderia me mostrar um código de exemplo?
Obrigado