Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 вопрос о Distributed Transactions  [new]
Тупица
Guest
Проблемма следующая:
на сервере A в базе AA есть таблица AAA. Один из тригеров этой таблице
должен инсертить в таблицу BBB из базы BB сервера B.
Согласно BOL и инструкциям на technet порядок работ следующий:
1) Включить на обоих серверах в настройках соединения Remote connections и mts.
2) Завести Linked Servers (на всякий случай для более общего подхода все рапросы к linked серверу идут под sa)
3) проверить включен ли distributed transactions coordinator.
4) собственно в тригере:

BEGIN DISTRIBUTED TRANSACTION
Insert into B.BB.dbo.BBB SELECT * from Inserted
COMMIT TRAN

Результат:
сообщение об ошибке вида:
New transaction cannot enlist in the specified transaction coordinator
ITransactionJoin returned 0x8004d00a
The operation could not be performed because the OLE DB provider 'SQLOLEDB' was unable to begin a distributed transaction

В чем я не прав?
11 мар 05, 13:00    [1378082]     Ответить | Цитировать Сообщить модератору
 Re: вопрос о Distributed Transactions  [new]
funikovyuri
Member

Откуда: Симферополь
Сообщений: 4045
А distributed transactions coordinator включен на обоих серверах?

А права на подключения sa из A к серверу B есть?

А зечем нужен begin transaction если тригер и так работает в контексте транзакции?
11 мар 05, 13:27    [1378261]     Ответить | Цитировать Сообщить модератору
 Re: вопрос о Distributed Transactions  [new]
Тупица
Guest
distributed transactions coordinator включен на обоих серверах

что Вы имели в виду под вопросом "А права на подключения sa из A к серверу B есть?"
при настройке Linked Сервера в закладке Security указан sa, далее:
For a login not defined in the list above, connections will:
Be made using this security context:
Remote login: sa
with password: ***

Если Вы имели в виду настройки самого Distributed transactions Coordinator
в Component Services то я там ничего не менял (в доках к SQL говориться только о включении DTC)
11 мар 05, 13:34    [1378322]     Ответить | Цитировать Сообщить модератору
 Re: вопрос о Distributed Transactions  [new]
funikovyuri
Member

Откуда: Симферополь
Сообщений: 4045
Я имел в виду работает ли подключение (linked server) с А на Б?
11 мар 05, 14:18    [1378568]     Ответить | Цитировать Сообщить модератору
 Re: вопрос о Distributed Transactions  [new]
Тупой
Guest
Вроде работает: если тупо в селекте связывать таблички с А с табличками с Б все ок.
11 мар 05, 14:53    [1378788]     Ответить | Цитировать Сообщить модератору
 Re: вопрос о Distributed Transactions  [new]
funikovyuri
Member

Откуда: Симферополь
Сообщений: 4045
А MTS запущен?
11 мар 05, 15:06    [1378869]     Ответить | Цитировать Сообщить модератору
 Re: вопрос о Distributed Transactions  [new]
Тупица
Guest
В Enterprise manager в свойствах сервера на закладке Connections стоит галочка Enforce Distributed transactions (MTS), так что вроде бы и включен. А вот где в винде проверить включен ли он или нет на самом деле я сейчас и ищу..
11 мар 05, 15:42    [1379072]     Ответить | Цитировать Сообщить модератору
 Re: вопрос о Distributed Transactions  [new]
funikovyuri
Member

Откуда: Симферополь
Сообщений: 4045
Это меня немного занесло. MTS это не программа, а набор сервисов...

вот тут про особенности реализации распределенных транзакций у Ole DB provider'a для SQL Server'a

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/acdata/ac_8_qd_12_1prm.asp

Там в частности сказано

Transaction Considerations With Linked SQL Servers
The Microsoft OLE DB Provider for SQL Server does not support nested transactions. Therefore, XACT_ABORT should be set to ON for data modification operations inside implicit or explicit transactions and for data modification operations against distributed partitioned views.
11 мар 05, 15:59    [1379172]     Ответить | Цитировать Сообщить модератору
 Re: вопрос о Distributed Transactions  [new]
Тупица
Guest
Вроде все понятно, но нифига не понятно?-(
Не понятно следующее: Как все-таки сделать инсерт из тригера в табличку на другом сервере? :-)
11 мар 05, 17:07    [1379603]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить