Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Linked servers и table variables / 20 сообщений из 20, страница 1 из 1
11.06.2018, 19:25
    #39659517
dbms_bdsm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Linked servers и table variables
Потребовалось вызвать процедуру на удаленном сервере, которой скормить табличную переменную.

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

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

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

1) Хитропопый динамический SQL:
Код: sql
1.
2.
3.
4.
5.
6.
7.
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
Как то выглядит пустой тратой ресурсом на преобразования

Есть ли еще способы?
...
Рейтинг: 0 / 0
12.06.2018, 10:38
    #39659614
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Linked servers и table variables
1. Заполняем временную таблицу на удаленном сервере
select * into [REMOTEDB].[DB]..#temptable from ...

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

EXEC [REMOTEDB].[DB]..
...
Рейтинг: 0 / 0
12.06.2018, 10:44
    #39659618
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Linked servers и table variables
dbms_bdsm,
автор2) преобразование table -> xml -> nvarchar -> xml -> table
Как то выглядит пустой тратой ресурсом на преобразования
обчная практика или заполняйте таблицу прямо на удалённом сервере
...
Рейтинг: 0 / 0
12.06.2018, 11:23
    #39659638
dbms_bdsm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Linked servers и table variables
автор1. Заполняем временную таблицу на удаленном сервере
select * into [REMOTEDB].[DB]..#temptable from ...


А когда в таком случае удалятся данные из временной таблицы?
Я дергаю удаленную сторку из локальной
Удаление будет на выходе из локальной?
Не вызовет ли это начало распределенной транзакции?
...
Рейтинг: 0 / 0
12.06.2018, 11:35
    #39659640
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Linked servers и table variables
dbms_bdsmА когда в таком случае удалятся данные из временной таблицы?Никогда. Ибо удалять нечего, т.к. создать временную таблицу таким способом невозможно.
Более того если таки создать удаленно временную таблицу явно, ее все равно не получиться использовать.
Она самоудалится сразу после завершения инструкции, ее создавшей. Ну или будет существовать некоторое время, пока соединение живет в пуле.
Но попасть следующей инструкцией на это соединение из пула - все равно что тыкать пальцем в небо.

Используйте xml. Это самый простой способ.
...
Рейтинг: 0 / 0
12.06.2018, 11:43
    #39659643
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Linked servers и table variables
[quot invm]dbms_bdsmОна самоудалится сразу после завершения инструкции, ее создавшей. Ну или будет существовать некоторое время, пока соединение живет в пуле.
Но попасть следующей инструкцией на это соединение из пула - все равно что тыкать пальцем в небо.


Пакет инструкций T-SQL? Не, не слыхал.
...
Рейтинг: 0 / 0
12.06.2018, 11:59
    #39659649
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Linked servers и table variables
aleks222Пакет инструкций T-SQL? Не, не слыхал.Начался очередной месячник идиотских советов от нашей "гуры"

Если ты сформируешь пакет, то получишь аналогичный опубликованному в стартовом посте. Только в нем, вместо табличного типа будет фигурировать временная таблица.
...
Рейтинг: 0 / 0
12.06.2018, 12:23
    #39659658
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Linked servers и table variables
[quot invm]dbms_bdsmБолее того если таки создать удаленно временную таблицу явно, ее все равно не получиться использовать.
Она самоудалится сразу после завершения инструкции, ее создавшей. Ну или будет существовать некоторое время, пока соединение живет в пуле.


создать можно, лучше создавать ##-таблицу - её видно всем
...
Рейтинг: 0 / 0
12.06.2018, 13:01
    #39659669
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Linked servers и table variables
komradсоздать можнМожно. Нельзя использовать вне рамок пакета, где создали.
komradлучше создавать ##-таблицуКаждый раз с другим именем? Или писать инфраструктуру совместного использования общего ресурса?
...
Рейтинг: 0 / 0
12.06.2018, 13:30
    #39659674
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Linked servers и table variables
invmkomradсоздать можнМожно. Нельзя использовать вне рамок пакета, где создали.
komradлучше создавать ##-таблицуКаждый раз с другим именем? Или писать инфраструктуру совместного использования общего ресурса?
безусловно, есть много "но", однако как вариант такая возможность существует
...
Рейтинг: 0 / 0
12.06.2018, 14:06
    #39659695
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Linked servers и table variables
komradбезусловно, есть много "но", однако как вариант такая возможность существуетИх слишком много, этих "но", чтобы рассматривать этот вариант как альтернативу более простым.
Имхо, если уж рассматривать передачу параметров через таблицу, то гораздо проще использовать постоянную.
...
Рейтинг: 0 / 0
12.06.2018, 14:32
    #39659711
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Linked servers и table variables
invmkomradбезусловно, есть много "но", однако как вариант такая возможность существуетИх слишком много, этих "но", чтобы рассматривать этот вариант как альтернативу более простым.
Имхо, если уж рассматривать передачу параметров через таблицу, то гораздо проще использовать постоянную.

не настаиваю, Вам видней, вероятно
...
Рейтинг: 0 / 0
12.06.2018, 14:34
    #39659713
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Linked servers и table variables
Если вы начинаете думат об использовании глобальной временной таблици - значить что-то вы делаете не так
...
Рейтинг: 0 / 0
12.06.2018, 14:46
    #39659716
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Linked servers и table variables
TaPaKЕсли вы начинаете думат об использовании глобальной временной таблици - значить что-то вы делаете не так
иногда бывает выгодней пренебречь канонами, кошерностью, фэншуем и т.п. вещами и сделать чтобы работало здесь и сейчас, чем переконфигурировать н-ное кол-во серверов и изменить внутренние орг-процессы ради одного-двух запусков в месяц

но так, лирическое отступление )
...
Рейтинг: 0 / 0
12.06.2018, 14:48
    #39659717
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Linked servers и table variables
komradTaPaKЕсли вы начинаете думат об использовании глобальной временной таблици - значить что-то вы делаете не так
иногда бывает выгодней пренебречь канонами, кошерностью, фэншуем и т.п. вещами и сделать чтобы работало здесь и сейчас, чем переконфигурировать н-ное кол-во серверов и изменить внутренние орг-процессы ради одного-двух запусков в месяц

но так, лирическое отступление )
это бред, а не "лирическое отступление "
...
Рейтинг: 0 / 0
12.06.2018, 14:54
    #39659721
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Linked servers и table variables
TaPaKkomradпропущено...

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

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

категоричность суждений обычно намекает на узость кругозора, либо недалекость автора
ничего личного, кстати, жизненное наблюдение
...
Рейтинг: 0 / 0
12.06.2018, 15:06
    #39659729
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Linked servers и table variables
komradиногда бывает выгодней пренебречь канонами, кошерностью, фэншуем и т.п. вещами и сделать чтобы работало здесь и сейчасБезусловно.
Но здесь ключевое - "чтобы работало".
К сожалению, для обеспечения надежной работы через глобальные временные таблицы, потребуются дополнительные неочевидные "приседания".
...
Рейтинг: 0 / 0
12.06.2018, 15:09
    #39659732
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Linked servers и table variables
komradTaPaKпропущено...

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

категоричность суждений обычно намекает на узость кругозора, либо недалекость автора
ничего личного, кстати, жизненное наблюдение
о какой переконцигурации идёт речь если вопрос между временной/глобальной/постоянной/xml таблице для работы процедуры?
...
Рейтинг: 0 / 0
12.06.2018, 15:21
    #39659738
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Linked servers и table variables
TaPaKkomradпропущено...


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

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

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

так что, если что-то выглядит бредом, то не всегда таковым является по факту
...
Рейтинг: 0 / 0
12.06.2018, 15:26
    #39659740
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Linked servers и table variables
komradTaPaKпропущено...

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

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

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

так что, если что-то выглядит бредом, то не всегда таковым является по факту
А! Это те мифические "иногда" которые никак не относятся к теме, ну так да, иногда идёт дождь
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Linked servers и table variables / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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