powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SQL 2012 link-server запрос > 8000 знаков вытянуть таблицу
9 сообщений из 9, страница 1 из 1
SQL 2012 link-server запрос > 8000 знаков вытянуть таблицу
    #39859467
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день всем.

SQL 2012

Есть куча (20) филиалов (SQL 2012)
откуда я тяну инфу через линк-сервер


SET @FSql = '
SELECT * INTO ##Tmp_Prom1
FROM OPENQUERY
( [@AServerName],
"
запрос 1
UNION ALL
запрос 2

логика сложная и когда добавил в подзапросы еще по 4 жойна - вылез за 8000
понятно что можно разбить на 2
но там логика почти одинаковая и НЕ хотелось бы бить ее искуственно


Есть ли спобос обойти по дургому
советы про EXECUTE AT я читал
НО

EXECUTE ( 'SELECT * INTO ##ZZ FROM csc..prix where id = 0') AT [lINK-SERVER]

отрабывтаыве безж ошибок
но таблицы ##ZZ нет ни там ни там
а мне надо эту таблицу получить к себе
...
Рейтинг: 0 / 0
SQL 2012 link-server запрос > 8000 знаков вытянуть таблицу
    #39859506
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гулин Федорлогика сложная и когда добавил в подзапросы еще по 4 жойна - вылез за 8000
понятно что можно разбить на 2
но там логика почти одинаковая и НЕ хотелось бы бить ее искуственно

Есть ли спобос обойти по дургомуЧто "обойти", проблема то в чём?
...
Рейтинг: 0 / 0
SQL 2012 link-server запрос > 8000 знаков вытянуть таблицу
    #39859507
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гулин Федор,

where id = 0; select * from ##zz
...
Рейтинг: 0 / 0
SQL 2012 link-server запрос > 8000 знаков вытянуть таблицу
    #39859515
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гулин Федорвылез за 8000varchar(max) уже отменили?
...
Рейтинг: 0 / 0
SQL 2012 link-server запрос > 8000 знаков вытянуть таблицу
    #39859675
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgГулин Федорлогика сложная и когда добавил в подзапросы еще по 4 жойна - вылез за 8000
понятно что можно разбить на 2
но там логика почти одинаковая и НЕ хотелось бы бить ее искуственно

Есть ли спобос обойти по дургомуЧто "обойти", проблема то в чём?

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/031d3a2b-9095-4622-9ef5-7ac0f89e6f13/openquery-parameter-length-limitation-of-8000-characters?forum=transactsql

проблема вот - не может запрос быть больше 8000 символов
в openquery

зы пока по простому пути пошел - побил на 2 запроса.
...
Рейтинг: 0 / 0
SQL 2012 link-server запрос > 8000 знаков вытянуть таблицу
    #39859679
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КритикГулин Федор,

where id = 0; select * from ##zz

СПАСИБО
да это работатет - но мне надо загнать результат в ##Tmp таблицу у себя

Код: sql
1.
EXECUTE ( 'SELECT * INTO ##ZZ FROM csc..postavka where 1 = 0;SELECT * FROM  ##ZZ') AT [link]



INSERT INTO #Tmp EXECUTE(@FSql)
дожно прокатить - но я спец. уходил от этой конструкции
потому что резалтсет меняется очень часто ( поля добавлюятся-убираются )

можно ли загнать таким образом результат через Select * into from
...
Рейтинг: 0 / 0
SQL 2012 link-server запрос > 8000 знаков вытянуть таблицу
    #39859705
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гулин ФедорКритикГулин Федор,

where id = 0; select * from ##zz

СПАСИБО
да это работатет - но мне надо загнать результат в ##Tmp таблицу у себя

Код: sql
1.
EXECUTE ( 'SELECT * INTO ##ZZ FROM csc..postavka where 1 = 0;SELECT * FROM  ##ZZ') AT [link]



INSERT INTO #Tmp EXECUTE(@FSql)
дожно прокатить - но я спец. уходил от этой конструкции
потому что резалтсет меняется очень часто ( поля добавлюятся-убираются )

можно ли загнать таким образом результат через Select * into from
В принципе можно создать пустую таблицу командой
Код: sql
1.
EXECUTE('SELECT * INTO ##Tmp_Prom1 FROM OPENQUERY( [@AServerName],''........'')')

При этом во внутренний запрос добавить условие WHERE 1=0, и не делать условия для джойнов.
Тогда запрос поместится в 8000 символов.

А потом уже вставить данные командой:
Код: sql
1.
INSERT INTO ##Tmp_Prom1 EXECUTE(@Sql) AT [link]

, где в @Sql будет уже полный запрос ,со всеми условиями


PS Но, безусловно, самое правильное - изменить архитектурный подход, потому что работать с неизвестными полями невозможно.
...
Рейтинг: 0 / 0
SQL 2012 link-server запрос > 8000 знаков вытянуть таблицу
    #39859985
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg,
СПС - да то воркараунд
но тогда уже проще просто CREATE TABLE #
в одном запросе пока < 5000 -

попутно возник вопрос по
EXECUTE ( '') AT [lINK-SERVER]

Код: sql
1.
EXECUTE ( 'Exec md1..olap_dz_sync_dz2  15') AT [vsrv-sql-md1]


есть часть ETL написанная обратным образом - все с филиалов грузится через линк-сервер на главный
правильно ли я понимаю что
вызывая циклом как выше - эти SP будут выполянться на тех серверах
(я в принципе это вижу )
я хочу зашедулить это на своем ETL сервере ( а не на серверах филиалов - как сейчас )
вопрос - в доп. нагрузке - я понимаю что она Мала - только передать запрос на выполнение туда
...
Рейтинг: 0 / 0
SQL 2012 link-server запрос > 8000 знаков вытянуть таблицу
    #39860017
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гулин Федорно тогда уже проще просто CREATE TABLE #Дык вы же не знаете поля таблицы?
Если можно CREATE TABLE, тогда лучше да, сделать таблицу, а потом в неё инсёрт.

Гулин Федорвызывая циклом как выше - эти SP будут выполянться на тех серверахДа.

Гулин Федоря хочу зашедулить это на своем ETL сервере ( а не на серверах филиалов - как сейчас )
вопрос - в доп. нагрузке - я понимаю что она Мала - только передать запрос на выполнение тудаМожете так, можете напрямую коннектиться из ETL на серверы филиалов.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SQL 2012 link-server запрос > 8000 знаков вытянуть таблицу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]