Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Вызов ХП через linked server и сохранение результатов  [new]
IFK
Member

Откуда: Гондурас
Сообщений: 1025
Уважаемый форум!

Искал и не нашел решение для небольшой заминки: есть linked server Serv1 на нем база Base1, в этой базе есть ХП SP1, которая возвращает набор записей. Вопрос: как на сервере Serv2 выполнить ХП SP1 на linked server и сохранить результаты работы в таблицу?

Спасибо!
19 июн 18, 15:28    [21503681]     Ответить | Цитировать Сообщить модератору
 Re: Вызов ХП через linked server и сохранение результатов  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
дивно в Гондурасе то гугел забнен :) ШО не одно решения не нашлось ?
19 июн 18, 15:30    [21503695]     Ответить | Цитировать Сообщить модератору
 Re: Вызов ХП через linked server и сохранение результатов  [new]
Rankatan
Member

Откуда:
Сообщений: 250
Берешь и выполняешь exec [linkname].[base].[dbo].[sp], только перед этим в настройках сервера даешь права на выполнение процедур. По умолчанию выключено.
19 июн 18, 15:32    [21503701]     Ответить | Цитировать Сообщить модератору
 Re: Вызов ХП через linked server и сохранение результатов  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Maxx
дивно в Гондурасе то гугел забнен :) ШО не одно решения не нашлось ?

Точно,забанен
19 июн 18, 15:33    [21503709]     Ответить | Цитировать Сообщить модератору
 Re: Вызов ХП через linked server и сохранение результатов  [new]
IFK
Member

Откуда: Гондурас
Сообщений: 1025
Maxx, если нечего сказать, предлагаю тебе отвалить. Спасибо заранее.
19 июн 18, 16:00    [21503801]     Ответить | Цитировать Сообщить модератору
 Re: Вызов ХП через linked server и сохранение результатов  [new]
IFK
Member

Откуда: Гондурас
Сообщений: 1025
Rankatan, так и делаю, но че-то не совсем пока понимаю, как возвращаемые результаты загнать во временную таблицу. :(

EXEC sp_executeSQL @stmt = 'EXEC [Serv1].[Base1].[dbo].SP1' 
19 июн 18, 16:01    [21503804]     Ответить | Цитировать Сообщить модератору
 Re: Вызов ХП через linked server и сохранение результатов  [new]
Rankatan
Member

Откуда:
Сообщений: 250
insert into tbl()
EXEC [Serv1].[Base1].[dbo].SP1
19 июн 18, 16:04    [21503814]     Ответить | Цитировать Сообщить модератору
 Re: Вызов ХП через linked server и сохранение результатов  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
IFK,

или INSERT INTO .. EXEC .. и получаете DTC + общую забагованность конструкции или SELECT INTO FROM OPENQUERY(EXEC )
19 июн 18, 16:06    [21503817]     Ответить | Цитировать Сообщить модератору
 Re: Вызов ХП через linked server и сохранение результатов  [new]
IFK
Member

Откуда: Гондурас
Сообщений: 1025
TaPaK
IFK,

или INSERT INTO .. EXEC .. и получаете DTC + общую забагованность конструкции ..
а можно поподробнее про это?
19 июн 18, 16:33    [21503878]     Ответить | Цитировать Сообщить модератору
 Re: Вызов ХП через linked server и сохранение результатов  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7399
IFK,

сервер не может знать - что вернется из процедуры. количество наборов данных и их состав. Поэтому не используйте процедуры для получения данных, используйте функции или обращения к таблицам. При использовании конструкции INSERT ... EXEC через связанный сервер, кроме всего прочего, получите распределенную транзакцию. Надо уметь ее готовить и не каждая корпоративная сеть разрешит такое.
20 июн 18, 12:53    [21506441]     Ответить | Цитировать Сообщить модератору
 Re: Вызов ХП через linked server и сохранение результатов  [new]
IFK
Member

Откуда: Гондурас
Сообщений: 1025
Владислав Колосов, спасибо за ответ.

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

Спасибо!
20 июн 18, 13:28    [21506563]     Ответить | Цитировать Сообщить модератору
 Re: Вызов ХП через linked server и сохранение результатов  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7399
IFK,

Используйте Integration Services, создаете два подключения источник и приемник, на источнике выполняете процедуру и так далее. Да и вставка будет намного быстрее.
20 июн 18, 13:53    [21506657]     Ответить | Цитировать Сообщить модератору
 Re: Вызов ХП через linked server и сохранение результатов  [new]
IFK
Member

Откуда: Гондурас
Сообщений: 1025
Владислав Колосов, хм, с источником не могу делать ничего, в том числе создавать и выполнять ХП.
20 июн 18, 13:58    [21506682]     Ответить | Цитировать Сообщить модератору
 Re: Вызов ХП через linked server и сохранение результатов  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7399
IFK,

ничего не путаете?

автор
как на сервере Serv2 выполнить ХП SP1 на linked server

Serv1 и есть источник.
При использовании SSIS потребуется синтаксис EXEC Proc WITH RESULT SETS.
20 июн 18, 14:49    [21506877]     Ответить | Цитировать Сообщить модератору
 Re: Вызов ХП через linked server и сохранение результатов  [new]
IFK
Member

Откуда: Гондурас
Сообщений: 1025
Владислав Колосов, пардон, это, наверное, путаница в терминах. Я имел в ввиду, что Serv2 - источник ДАННЫХ. А что Вы имели в виду под источником?
20 июн 18, 15:17    [21507054]     Ответить | Цитировать Сообщить модератору
 Re: Вызов ХП через linked server и сохранение результатов  [new]
IFK
Member

Откуда: Гондурас
Сообщений: 1025
Пардон. Игнор последнего поста. Владислав прав - Serv1 источник данных.
20 июн 18, 16:01    [21507212]     Ответить | Цитировать Сообщить модератору
 Re: Вызов ХП через linked server и сохранение результатов  [new]
Idol_111
Member

Откуда:
Сообщений: 598
TaPaK
IFK,

или INSERT INTO .. EXEC .. и получаете DTC + общую забагованность конструкции или SELECT INTO FROM OPENQUERY(EXEC )

А в чем тут забагованность?

При использовании Linked server почти (можно ведь и отключить DTC для этого линка) всегда DTC идет паравозом.

Владислав Колосов,
Это при каком раскладе "сеть" захочет запретить DTC между двумя SQL серверами?

Конечно, любители извращений могут и SSIS пакет наваять для такой простой задачи (если конечно вы не миллион записей таскаете с место на место). Но тут уже кто как хочет создает себе головняк.
21 июн 18, 02:40    [21508341]     Ответить | Цитировать Сообщить модератору
 Re: Вызов ХП через linked server и сохранение результатов  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Idol_111,

автор
А в чем тут забагованность?


Речь про INSERT INTO EXEC которой лучше вообще не пользоваться
21 июн 18, 08:46    [21508450]     Ответить | Цитировать Сообщить модератору
 Re: Вызов ХП через linked server и сохранение результатов  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7399
Idol_111,

автор
Это при каком раскладе "сеть" захочет запретить DTC между двумя SQL серверами?


при очень простом - открыты 80, 110, 23 и 1433 порты. Всё остальное закрыто требования безопасности.
21 июн 18, 17:35    [21510430]     Ответить | Цитировать Сообщить модератору
 Re: Вызов ХП через linked server и сохранение результатов  [new]
Idol_111
Member

Откуда:
Сообщений: 598
Владислав Колосов
Idol_111,

автор
Это при каком раскладе "сеть" захочет запретить DTC между двумя SQL серверами?


при очень простом - открыты 80, 110, 23 и 1433 порты. Всё остальное закрыто требования безопасности.

включаете Distributed Transaction Coordinator (TCP-In) в файрволе и все работает.
22 июн 18, 02:22    [21511396]     Ответить | Цитировать Сообщить модератору
 Re: Вызов ХП через linked server и сохранение результатов  [new]
Idol_111
Member

Откуда:
Сообщений: 598
TaPaK
Idol_111,

автор
А в чем тут забагованность?


Речь про INSERT INTO EXEC которой лучше вообще не пользоваться

если сложно описать, то хоть ссылку дайте почитать. А то я прям заинтригован :).
22 июн 18, 02:24    [21511400]     Ответить | Цитировать Сообщить модератору
 Re: Вызов ХП через linked server и сохранение результатов  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Idol_111
TaPaK
Idol_111,

пропущено...


Речь про INSERT INTO EXEC которой лучше вообще не пользоваться

если сложно описать, то хоть ссылку дайте почитать. А то я прям заинтригован :).

для любителей новых дверей

из последних на sql 2014+

CREATE TABLE dbo.tmp  (Id INT IDENTITY(1,1) ,Code VARCHAR(1))
INSERT INTO  dbo.tmp  (Code) VALUES('A')
INSERT INTO  dbo.tmp  (Id,Code) EXEC (N'SELECT 1,1')
INSERT INTO  dbo.tmp  (Code) VALUES('X')
SELECT * FROM dbo.tmp

DROP TABLE tmp

ну и дальше в гугл
bad+practice+insert+into+exec
22 июн 18, 09:04    [21511614]     Ответить | Цитировать Сообщить модератору
 Re: Вызов ХП через linked server и сохранение результатов  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
вот ещё весёлый
https://dba.stackexchange.com/questions/155684/bug-in-database-scoped-configurations

но мы же не отговариваем вас скакать по граблям, скачите :)
22 июн 18, 09:26    [21511721]     Ответить | Цитировать Сообщить модератору
 Re: Вызов ХП через linked server и сохранение результатов  [new]
Idol_111
Member

Откуда:
Сообщений: 598
TaPaK,

спасибо за объяснения.
У любого метода есть ограничения, их просто нужно знать и применять метод соответственно.
25 июн 18, 01:29    [21517518]     Ответить | Цитировать Сообщить модератору
 Re: Вызов ХП через linked server и сохранение результатов  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7399
Idol_111
Владислав Колосов
Idol_111,

пропущено...


при очень простом - открыты 80, 110, 23 и 1433 порты. Всё остальное закрыто требования безопасности.

включаете Distributed Transaction Coordinator (TCP-In) в файрволе и все работает.


То есть вы понятия не имеете какие требования к настройке DTC и как они могут взаимодействовать с корпоративной политикой безопасности.
25 июн 18, 13:03    [21518387]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить