Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вставка данных из связного сервера
|
|||
|---|---|---|---|
|
#18+
Существует задача в которой необходимо в заданную таблицу вставлять данные из связного сервера. Для унификации решено выполнять процедуру вставки на исходном сервере, запрос должен выглядеть примерно так Код: sql 1. 2. где хранимка StoreProcedure возвращает 1 набор данных Запрос в формате Код: sql 1. 2. работает без проблем, а с использование хранимки вываливается ошибка Distributed transaction. Можете пояснить почему так происходит. И так избавиться от ошибки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2018, 16:32 |
|
||
|
Вставка данных из связного сервера
|
|||
|---|---|---|---|
|
#18+
Exec () at server ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2018, 17:31 |
|
||
|
Вставка данных из связного сервера
|
|||
|---|---|---|---|
|
#18+
Критик, Мне это не подходит, я планирую заворачивать вызов хранимки в EXEC(''), и динамически задавать имя связного сервера, так как заранее не знаю с какого необходимо будет получить данные, насколько мне известно AT SERVER нельзя завернуть в динамический SQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2018, 17:35 |
|
||
|
Вставка данных из связного сервера
|
|||
|---|---|---|---|
|
#18+
lex452работает без проблем, а с использование хранимки вываливается ошибка Distributed transaction.1. и что это за ошибка? 2. просто вызов процедуры без вставки в табл работает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2018, 17:56 |
|
||
|
Вставка данных из связного сервера
|
|||
|---|---|---|---|
|
#18+
Дедушка, Да, просто вызов работет. А на счет ошибки, если бы я знал что она означает, то на форум бы ни писал. Как я понял, что запрещены распределенные транзакции. Вот мне не понятно, почему процедуру можно выполнить, но нельзя вставить данные в таблицу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2018, 18:39 |
|
||
|
Вставка данных из связного сервера
|
|||
|---|---|---|---|
|
#18+
lex452Вот мне не понятно, почему процедуру можно выполнить, но нельзя вставить данные в таблицуПотому что insert всегда выполняется в транзакции. Настраивайте DTC. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2018, 19:58 |
|
||
|
Вставка данных из связного сервера
|
|||
|---|---|---|---|
|
#18+
invmНастраивайте DTC. Не всегда есть такая возможность. Может есть другие варианты решения задачи. Необходимо реализовать вставку данных из связных серверов в одну общую целевую таблицу (TargetTable). Сейчас реализовано так, что создается подключение к связному и данные оттуда заносятся в TargetTable, то есть на момент выполнения происходит вставка данных на связный сервер, но это как показали сравнительные тесты медленный способ. Вот и хочется переделать так чтобы процедура выполнялась на сервере с TargetTable. Но есть ряд ограничений: Источники с данными имеют разный формат, то есть для каждого нужно писать индивидуальный запрос на выборку, поэтому и хочется завернуть его в хранимую процедуру на сервере источнике и обращаться к ним через EXEC('') c подменой имени сервера ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2018, 21:52 |
|
||
|
Вставка данных из связного сервера
|
|||
|---|---|---|---|
|
#18+
lex452с использование хранимки вываливается ошибка Distributed transaction. Можете пояснить почему так происходит. И так избавиться от ошибки.Установите для linked server параметр remote proc transaction promotion в FALSE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2018, 22:04 |
|
||
|
Вставка данных из связного сервера
|
|||
|---|---|---|---|
|
#18+
lex452А на счет ошибки, если бы я знал что она означает, то на форум бы ни писал.дело не в знании, логично скопипастить сюда полный текст ошибки, а не пересказывать урезанную версию, чтобы все играли в угадайку. lex452Необходимо реализовать вставку данных из связных серверов в одну общую целевую таблицу (TargetTable). Источники с данными имеют разный формати почему не используете специально предназначенный для этого инструмент - SSIS? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2018, 22:27 |
|
||
|
Вставка данных из связного сервера
|
|||
|---|---|---|---|
|
#18+
Дедушка, Ssis я в принципе тоже планировал попробовать подцепить, но их сложнее поддерживать и менять, чем хранимые процедуры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2018, 22:56 |
|
||
|
Вставка данных из связного сервера
|
|||
|---|---|---|---|
|
#18+
lex452Существует задача в которой необходимо в заданную таблицу вставлять данные из связного сервера. Для унификации решено выполнять процедуру вставки на исходном сервере, запрос должен выглядеть примерно так Код: sql 1. 2. где хранимка StoreProcedure возвращает 1 набор данных Запрос в формате Код: sql 1. 2. работает без проблем, а с использование хранимки вываливается ошибка Distributed transaction. Можете пояснить почему так происходит. И так избавиться от ошибки. а так? Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 12:40 |
|
||
|
Вставка данных из связного сервера
|
|||
|---|---|---|---|
|
#18+
lex452, Обход DTC через Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 12:43 |
|
||
|
Вставка данных из связного сервера
|
|||
|---|---|---|---|
|
#18+
TaPaKlex452, Обход DTC через Код: sql 1. Openquery не поддерживает параметризация, насколько я помню ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 12:58 |
|
||
|
Вставка данных из связного сервера
|
|||
|---|---|---|---|
|
#18+
Ролг Хупин, А чем Ваше предложение отличается от того что я написал в самом первом вопросе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 13:01 |
|
||
|
Вставка данных из связного сервера
|
|||
|---|---|---|---|
|
#18+
lex452TaPaKlex452, Обход DTC через Код: sql 1. Openquery не поддерживает параметризация, насколько я помню что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 13:03 |
|
||
|
Вставка данных из связного сервера
|
|||
|---|---|---|---|
|
#18+
invmlex452Вот мне не понятно, почему процедуру можно выполнить, но нельзя вставить данные в таблицуПотому что insert всегда выполняется в транзакции. Настраивайте DTC. Нет, ошибка возникает при EXEC. Insert не инициирует распределенную транзакцию, но EXEC - да. Если между серверами файрвол, то настройка DTC требует открытия довольно большого диапазона портов, на что админы не всегда идут. Настройте приложение так, чтобы процедура на удаленном сервере складывала данные в локальную для этого сервера таблицу, а затем забирайте данные при помощи Insert. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 18:57 |
|
||
|
Вставка данных из связного сервера
|
|||
|---|---|---|---|
|
#18+
Владислав Колосов, а при чём тут фаервол?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 19:04 |
|
||
|
Вставка данных из связного сервера
|
|||
|---|---|---|---|
|
#18+
alexeyvglex452с использование хранимки вываливается ошибка Distributed transaction. Можете пояснить почему так происходит. И так избавиться от ошибки.Установите для linked server параметр remote proc transaction promotion в FALSE Вот это помогло ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 19:37 |
|
||
|
Вставка данных из связного сервера
|
|||
|---|---|---|---|
|
#18+
TaPaKlex452пропущено... Openquery не поддерживает параметризация, насколько я помню что?нельзя переменной задать имя сервера подключения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 19:39 |
|
||
|
Вставка данных из связного сервера
|
|||
|---|---|---|---|
|
#18+
lex452TaPaKпропущено... что?нельзя переменной задать имя сервера подключения dynamic sql? всё обернуть в sp_executesql ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 19:46 |
|
||
|
Вставка данных из связного сервера
|
|||
|---|---|---|---|
|
#18+
TaPaKlex452, Обход DTC через Код: sql 1. Спасибо, забрал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 20:54 |
|
||
|
Вставка данных из связного сервера
|
|||
|---|---|---|---|
|
#18+
TaPaKВладислав Колосов, а при чём тут фаервол?? Для работы DTC, который использует распределенная транзакция, нужны TCP порты, межсерверный файрвол/прокси их может закрыть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2018, 11:33 |
|
||
|
Вставка данных из связного сервера
|
|||
|---|---|---|---|
|
#18+
lex452, Попробуй объекты связанного сервера обернуть в синонимы. Код: sql 1. Запросы с OPENQUERY сложно параметризировать, а с синонимами ты можешь существенно сократить объем траффика по сети так как работает фильтр на данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2018, 11:58 |
|
||
|
Вставка данных из связного сервера
|
|||
|---|---|---|---|
|
#18+
Cristiano_Rivaldolex452, Попробуй объекты связанного сервера обернуть в синонимы. Код: sql 1. Запросы с OPENQUERY сложно параметризировать, а с синонимами ты можешь существенно сократить объем траффика по сети так как работает фильтр на данные. и снионим избавит от DTC? и какой филтр на данные авторДля работы DTC, который использует распределенная транзакция, нужны TCP порты, межсерверный файрвол/прокси их может закрыть. тут вы немного правы, ибо ТС не привёл полный текст ошибки, но ввиду того что он даже не настраивал DTC для сервера, то это очень сильно мимо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2018, 12:01 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39607272&tid=1690209]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
74ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
80ms |
get tp. blocked users: |
2ms |
| others: | 242ms |
| total: | 448ms |

| 0 / 0 |
