Я пытаюсь проверить предложение, которое один из наших поставщиков представил нам для доступа к своей базе данных продуктов, и оно касается запросов и транзакций, которые охватывают несколько серверов. Я никогда раньше не делал этого непосредственно в базе данных и, честно говоря, я не в курсе, поэтому я пытаюсь смоделировать доказательство того, что это работает, по крайней мере, концептуально.
У меня есть два сервера SQL Server 2005. Давайте, ради аргумента, назовем их Server1 и Server2 [аплодисменты], каждый из которых содержит фиктивную базу данных. Фиктивная база данных на сервере Server1 называется Source, а на сервере Server2 - Destination, просто для простоты. Каждая из баз данных содержит одну таблицу с именем Input и Output соответственно, поэтому структура квази объясняется следующим образом:
- Server1.Source.dbo.Input
- Server2.Destination.dbo.Output
У меня есть хранимая процедура на сервере Server2 с именем WriteDataToOutput, которая получает один аргумент Varchar и записывает его содержимое в выходную таблицу.
Теперь начинается хитрость:
- Я хочу создать хранимую процедуру на Server1.Source, которая вызывает хранимую процедуру WriteDataToOutput, определенную на Server2, что кажется простым шагом.
- Я хочу, чтобы этот вызов был частью транзакции, чтобы в случае сбоя вызывающей процедуры выполнялась откат всей транзакции.
И здесь кончается мое знание того, что делать. Может кто-то указать мне верное направление? Я попробовал это на двух разных базах данных на одном и том же сервере, и он работал просто отлично, заставляя меня предположить, что он будет работать на разных серверах, вопрос в том, как мне поступить таким образом? С чего начать?