Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Не работает конструкция insert into () exec proc_имярек  [new]
enakenenaken
Member

Откуда: Нижний Новгород
Сообщений: 325
Добрый день всем!
Ситуация: Дано два сервера (server1, server2).

На обоих серверах процедуры (по одной на каждом: proc1, proc2)

Процедуры выводят таблицы.

Проблема! Не могу осуществить следующую конструкцию:

insert into #table (поля) 
exec server2.db.dbo.proc2 


Иными словами, пытаюсь то, что выведет процедура со второго сервака засунуть в локальную временную таблицу, которая создаётся на первом серваке. Задача, взять данные с обоих серваков и поработать с ними. Вот со второго сервака не получается забрать данные во временную таблицу. Как быть? Почему? Может, что с конфигурацией серверов? Перелинковка сделана.
При запуске exec server2.db.dbo.proc2 отлично отрабатывает, а вот при запуске

insert into #table (поля) 
exec server2.db.dbo.proc2 


вот такая ошибка:

[OLE/DB provider returned message: New transaction cannot enlist in the specified transaction coordinator. ]
OLE DB error trace [OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a].
Сообщение 7391, уровень 16, состояние 1, строка 42
The operation could not be performed because the OLE DB provider 'SQLOLEDB' was unable to begin a distributed transaction.

Подскажите пожалуйста, что может быть такого? Искали в Интернете, нашли всякую фигню даже на оф.сайте майкрософта. Толку ноль!!!
24 дек 14, 11:05    [17044446]     Ответить | Цитировать Сообщить модератору
 Re: Не работает конструкция insert into () exec proc_имярек  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
Ответ в ошибке кроется:
unable to begin a distributed transaction

настроить координатор распределённых транзакций нужно
24 дек 14, 11:16    [17044499]     Ответить | Цитировать Сообщить модератору
 Re: Не работает конструкция insert into () exec proc_имярек  [new]
enakenenaken
Member

Откуда: Нижний Новгород
Сообщений: 325
Knyazev Alexey,

А можно поподробнее? Что именно настроить? Намекните хоть! Спасибо!
24 дек 14, 11:21    [17044526]     Ответить | Цитировать Сообщить модератору
 Re: Не работает конструкция insert into () exec proc_имярек  [new]
enakenenaken
Member

Откуда: Нижний Новгород
Сообщений: 325
Knyazev Alexey,

Мы находили, что надо его включить.
Вопросы тогда.

Настраивать его как? И где? На каком серваке? На первом, втором? Обоих?
24 дек 14, 11:24    [17044540]     Ответить | Цитировать Сообщить модератору
 Re: Не работает конструкция insert into () exec proc_имярек  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
enakenenaken
Намекните хоть!


гугл залочили у вас?
например:
http://support.microsoft.com/kb/816701
24 дек 14, 11:39    [17044661]     Ответить | Цитировать Сообщить модератору
 Re: Не работает конструкция insert into () exec proc_имярек  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
Knyazev Alexey
enakenenaken
Намекните хоть!


гугл залочили у вас?
например:
[/url]http://support.microsoft.com/kb/816701


+ [url=http://support.microsoft.com/kb/839279]http://support.microsoft.com/kb/839279
24 дек 14, 11:45    [17044710]     Ответить | Цитировать Сообщить модератору
 Re: Не работает конструкция insert into () exec proc_имярек  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
enakenenaken
Knyazev Alexey,

Мы находили, что надо его включить.
Вопросы тогда.

Настраивать его как? И где? На каком серваке? На первом, втором? Обоих?


Это вопрос к сисадминам, он выходит за рамки SQL сервера.
24 дек 14, 12:03    [17044855]     Ответить | Цитировать Сообщить модератору
 Re: Не работает конструкция insert into () exec proc_имярек  [new]
enakenenaken
Member

Откуда: Нижний Новгород
Сообщений: 325
Не подходят варианты. Всё не то: выдаёт ту же ошибку....
24 дек 14, 12:28    [17045024]     Ответить | Цитировать Сообщить модератору
 Re: Не работает конструкция insert into () exec proc_имярек  [new]
enakenenaken
Member

Откуда: Нижний Новгород
Сообщений: 325
Смогли выполнить скрипт, отключив профиль домена! Но это не выход. Возможно, можно решить, прописав правила (политики).
24 дек 14, 12:58    [17045297]     Ответить | Цитировать Сообщить модератору
 Re: Не работает конструкция insert into () exec proc_имярек  [new]
Crimean
Member

Откуда:
Сообщений: 13148
если сервер от 2008 R2 то отключите распределенные транзакции для этого линкеда, если они не нужны
24 дек 14, 13:12    [17045404]     Ответить | Цитировать Сообщить модератору
 Re: Не работает конструкция insert into () exec proc_имярек  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Вставка в локальную таблицу результата удалённой процедуры всегда инициирует распределённую транзакцию.
Перепишите на прямой запрос. Например, пусть удалённая процедура помещает результат в удалённую таблицу, затем забирайте данные запросом из этой таблицы.
24 дек 14, 13:20    [17045470]     Ответить | Цитировать Сообщить модератору
 Re: Не работает конструкция insert into () exec proc_имярек  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31431
Владислав Колосов
Вставка в локальную таблицу результата удалённой процедуры всегда инициирует распределённую транзакцию.
Не всегда, нужно использовать опцию remote proc transaction promotion
= false
25 дек 14, 01:43    [17049170]     Ответить | Цитировать Сообщить модератору
 Re: Не работает конструкция insert into () exec proc_имярек  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
alexeyvg, возможно, сейчас уже не могу проверить.
Посмотрел этот параметр - OFF, однако, помню, что пришлось включать DTC в Windows, дабы работал insert ... exec ...
25 дек 14, 12:18    [17050463]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить