Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Linked servers и table variables  [new]
dbms_bdsm
Member

Откуда:
Сообщений: 4
Потребовалось вызвать процедуру на удаленном сервере, которой скормить табличную переменную.

Проблема в том что как оказалось прямо это делать нельзя
MSSQL
Table-valued parameters are not allowed in remote calls between servers.


Как нельзя и использовать xml:
MSSQL
Xml data type is not supported as a parameter to remote calls.


Хранимку на удаленном сервере можно править как угодно.
Вижу 2 способа решения

1) Хитропопый динамический SQL:
DECLARE @SQL nvarchar(4000)
SET @SQL = '
DECLARE @tbl tbl_type
INSERT INTO @tbl  (A1, A2) VALUES (5,6)
EXEC sp_Test 
        @tbl = @tbl '
EXEC [REMOTEDB].[DB]..sp_executesql @stmt = @SQL

При этом придется вручную клеить в строку заполнение таблицы и все такое


2) преобразование table -> xml -> nvarchar -> xml -> table
Как то выглядит пустой тратой ресурсом на преобразования

Есть ли еще способы?
11 июн 18, 19:25    [21484903]     Ответить | Цитировать Сообщить модератору
 Re: Linked servers и table variables  [new]
aleks222
Member

Откуда:
Сообщений: 985
1. Заполняем временную таблицу на удаленном сервере
select * into [REMOTEDB].[DB]..#temptable from ...

2. Вызываем процедуру, которая ее обрабатывает.

EXEC [REMOTEDB].[DB]..
12 июн 18, 10:38    [21485523]     Ответить | Цитировать Сообщить модератору
 Re: Linked servers и table variables  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
dbms_bdsm,
автор
2) преобразование table -> xml -> nvarchar -> xml -> table
Как то выглядит пустой тратой ресурсом на преобразования

обчная практика или заполняйте таблицу прямо на удалённом сервере
12 июн 18, 10:44    [21485528]     Ответить | Цитировать Сообщить модератору
 Re: Linked servers и table variables  [new]
dbms_bdsm
Member

Откуда:
Сообщений: 4
автор
1. Заполняем временную таблицу на удаленном сервере
select * into [REMOTEDB].[DB]..#temptable from ...


А когда в таком случае удалятся данные из временной таблицы?
Я дергаю удаленную сторку из локальной
Удаление будет на выходе из локальной?
Не вызовет ли это начало распределенной транзакции?
12 июн 18, 11:23    [21485606]     Ответить | Цитировать Сообщить модератору
 Re: Linked servers и table variables  [new]
invm
Member

Откуда: Москва
Сообщений: 9350
dbms_bdsm
А когда в таком случае удалятся данные из временной таблицы?
Никогда. Ибо удалять нечего, т.к. создать временную таблицу таким способом невозможно.
Более того если таки создать удаленно временную таблицу явно, ее все равно не получиться использовать.
Она самоудалится сразу после завершения инструкции, ее создавшей. Ну или будет существовать некоторое время, пока соединение живет в пуле.
Но попасть следующей инструкцией на это соединение из пула - все равно что тыкать пальцем в небо.

Используйте xml. Это самый простой способ.
12 июн 18, 11:35    [21485633]     Ответить | Цитировать Сообщить модератору
 Re: Linked servers и table variables  [new]
aleks222
Member

Откуда:
Сообщений: 985
[quot invm]
dbms_bdsm
Она самоудалится сразу после завершения инструкции, ее создавшей. Ну или будет существовать некоторое время, пока соединение живет в пуле.
Но попасть следующей инструкцией на это соединение из пула - все равно что тыкать пальцем в небо.


Пакет инструкций T-SQL? Не, не слыхал.
12 июн 18, 11:43    [21485656]     Ответить | Цитировать Сообщить модератору
 Re: Linked servers и table variables  [new]
invm
Member

Откуда: Москва
Сообщений: 9350
aleks222
Пакет инструкций T-SQL? Не, не слыхал.
Начался очередной месячник идиотских советов от нашей "гуры"

Если ты сформируешь пакет, то получишь аналогичный опубликованному в стартовом посте. Только в нем, вместо табличного типа будет фигурировать временная таблица.
12 июн 18, 11:59    [21485693]     Ответить | Цитировать Сообщить модератору
 Re: Linked servers и table variables  [new]
komrad
Member

Откуда:
Сообщений: 5245
[quot invm]
dbms_bdsm
Более того если таки создать удаленно временную таблицу явно, ее все равно не получиться использовать.
Она самоудалится сразу после завершения инструкции, ее создавшей. Ну или будет существовать некоторое время, пока соединение живет в пуле.


создать можно, лучше создавать ##-таблицу - её видно всем
12 июн 18, 12:23    [21485723]     Ответить | Цитировать Сообщить модератору
 Re: Linked servers и table variables  [new]
invm
Member

Откуда: Москва
Сообщений: 9350
komrad
создать можн
Можно. Нельзя использовать вне рамок пакета, где создали.
komrad
лучше создавать ##-таблицу
Каждый раз с другим именем? Или писать инфраструктуру совместного использования общего ресурса?
12 июн 18, 13:01    [21485774]     Ответить | Цитировать Сообщить модератору
 Re: Linked servers и table variables  [new]
komrad
Member

Откуда:
Сообщений: 5245
invm
komrad
создать можн
Можно. Нельзя использовать вне рамок пакета, где создали.
komrad
лучше создавать ##-таблицу
Каждый раз с другим именем? Или писать инфраструктуру совместного использования общего ресурса?

безусловно, есть много "но", однако как вариант такая возможность существует
12 июн 18, 13:30    [21485830]     Ответить | Цитировать Сообщить модератору
 Re: Linked servers и table variables  [new]
invm
Member

Откуда: Москва
Сообщений: 9350
komrad
безусловно, есть много "но", однако как вариант такая возможность существует
Их слишком много, этих "но", чтобы рассматривать этот вариант как альтернативу более простым.
Имхо, если уж рассматривать передачу параметров через таблицу, то гораздо проще использовать постоянную.
12 июн 18, 14:06    [21485925]     Ответить | Цитировать Сообщить модератору
 Re: Linked servers и table variables  [new]
komrad
Member

Откуда:
Сообщений: 5245
invm
komrad
безусловно, есть много "но", однако как вариант такая возможность существует
Их слишком много, этих "но", чтобы рассматривать этот вариант как альтернативу более простым.
Имхо, если уж рассматривать передачу параметров через таблицу, то гораздо проще использовать постоянную.


не настаиваю, Вам видней, вероятно
12 июн 18, 14:32    [21485986]     Ответить | Цитировать Сообщить модератору
 Re: Linked servers и table variables  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Если вы начинаете думат об использовании глобальной временной таблици - значить что-то вы делаете не так
12 июн 18, 14:34    [21485990]     Ответить | Цитировать Сообщить модератору
 Re: Linked servers и table variables  [new]
komrad
Member

Откуда:
Сообщений: 5245
TaPaK
Если вы начинаете думат об использовании глобальной временной таблици - значить что-то вы делаете не так

иногда бывает выгодней пренебречь канонами, кошерностью, фэншуем и т.п. вещами и сделать чтобы работало здесь и сейчас, чем переконфигурировать н-ное кол-во серверов и изменить внутренние орг-процессы ради одного-двух запусков в месяц

но так, лирическое отступление )
12 июн 18, 14:46    [21486015]     Ответить | Цитировать Сообщить модератору
 Re: Linked servers и table variables  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
komrad
TaPaK
Если вы начинаете думат об использовании глобальной временной таблици - значить что-то вы делаете не так

иногда бывает выгодней пренебречь канонами, кошерностью, фэншуем и т.п. вещами и сделать чтобы работало здесь и сейчас, чем переконфигурировать н-ное кол-во серверов и изменить внутренние орг-процессы ради одного-двух запусков в месяц

но так, лирическое отступление )

это бред, а не "лирическое отступление "
12 июн 18, 14:48    [21486017]     Ответить | Цитировать Сообщить модератору
 Re: Linked servers и table variables  [new]
komrad
Member

Откуда:
Сообщений: 5245
TaPaK
komrad
пропущено...

иногда бывает выгодней пренебречь канонами, кошерностью, фэншуем и т.п. вещами и сделать чтобы работало здесь и сейчас, чем переконфигурировать н-ное кол-во серверов и изменить внутренние орг-процессы ради одного-двух запусков в месяц

но так, лирическое отступление )

это бред, а не "лирическое отступление "


категоричность суждений обычно намекает на узость кругозора, либо недалекость автора
ничего личного, кстати, жизненное наблюдение
12 июн 18, 14:54    [21486034]     Ответить | Цитировать Сообщить модератору
 Re: Linked servers и table variables  [new]
invm
Member

Откуда: Москва
Сообщений: 9350
komrad
иногда бывает выгодней пренебречь канонами, кошерностью, фэншуем и т.п. вещами и сделать чтобы работало здесь и сейчас
Безусловно.
Но здесь ключевое - "чтобы работало".
К сожалению, для обеспечения надежной работы через глобальные временные таблицы, потребуются дополнительные неочевидные "приседания".
12 июн 18, 15:06    [21486067]     Ответить | Цитировать Сообщить модератору
 Re: Linked servers и table variables  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
komrad
TaPaK
пропущено...

это бред, а не "лирическое отступление "


категоричность суждений обычно намекает на узость кругозора, либо недалекость автора
ничего личного, кстати, жизненное наблюдение

о какой переконцигурации идёт речь если вопрос между временной/глобальной/постоянной/xml таблице для работы процедуры?
12 июн 18, 15:09    [21486075]     Ответить | Цитировать Сообщить модератору
 Re: Linked servers и table variables  [new]
komrad
Member

Откуда:
Сообщений: 5245
TaPaK
komrad
пропущено...


категоричность суждений обычно намекает на узость кругозора, либо недалекость автора
ничего личного, кстати, жизненное наблюдение

о какой переконцигурации идёт речь если вопрос между временной/глобальной/постоянной/xml таблице для работы процедуры?

это зависит от конкретного случая, поэтому я начал фразу с "иногда бывает"

из моего личного опыта: пришлось столкнуться с отсутствием SPN-ов, kerberos и delegation + DTC y большого кол-ва SQL серверов при решении одной практической задачи, а именно отчета (security), запускаемого 1-2 раза в месяц в отношении произвольного сиквела в сети

поэтому, пришлось изворачиваться по месту и применять неочевидные с первого взгляда подходы

так что, если что-то выглядит бредом, то не всегда таковым является по факту
12 июн 18, 15:21    [21486107]     Ответить | Цитировать Сообщить модератору
 Re: Linked servers и table variables  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
komrad
TaPaK
пропущено...

о какой переконцигурации идёт речь если вопрос между временной/глобальной/постоянной/xml таблице для работы процедуры?

это зависит от конкретного случая, поэтому я начал фразу с "иногда бывает"

из моего личного опыта: пришлось столкнуться с отсутствием SPN-ов, kerberos и delegation + DTC y большого кол-ва SQL серверов при решении одной практической задачи, а именно отчета (security), запускаемого 1-2 раза в месяц в отношении произвольного сиквела в сети

поэтому, пришлось изворачиваться по месту и применять неочевидные с первого взгляда подходы

так что, если что-то выглядит бредом, то не всегда таковым является по факту

А! Это те мифические "иногда" которые никак не относятся к теме, ну так да, иногда идёт дождь
12 июн 18, 15:26    [21486126]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить