Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / обращение к прилинкованному серверу / 4 сообщений из 4, страница 1 из 1
29.09.2020, 13:12
    #40003925
Reginar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обращение к прилинкованному серверу
Всем добрый день! Я из новичков. Очень нужна помощь знатоков.
На Server1 есть процедура sproc1, которая формирует список. На Server2 необходимо получить этот сформированный список и склеить его с данными из таблицы table2 на Server2. Server1 прилинкован к Server2.

Делаю так:
на Server2 создаю процедуру sproc2, в которой хочу получить список из Server1.dbo.sproc1 и закинуть его в табличную переменную:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE PROCEDURE dbo.sproc2 @day VARCHAR(19)
AS
DECLARE @tReport TABLE (
    f1,
    f2
)
INSERT INTO @tReport (
    f1,
    f2
)
EXEC Server1.dbo.sproc1 @day = @day 



но в этом варианте получаю ошибку - OLE DB provider "SQLNCLI" for linked server "Server1" returned message "Партнерский диспетчер транзакций отключил поддержку удаленных и сетевых транзакций."

Но если эту процедуру просто вызвать внутри и не закидывать в таблицу, а сделать вот так:
Код: sql
1.
2.
3.
CREATE PROCEDURE dbo.sproc2 @day VARCHAR(19)
AS
EXEC Server1.dbo.sproc1 @day = @day 



то она отлично отрабатывает и возвращает данные.

Подскажите, плиз, как правильно сделать, чтобы эти данные можно было сцепить с таблицей в итоге?

Заранее спасибо.
...
Рейтинг: 0 / 0
29.09.2020, 13:28
    #40003940
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обращение к прилинкованному серверу
Reginar
как правильно сделать, чтобы эти данные можно было сцепить с таблицей в итоге?

Включить DTC (Distribution Transact Coordinator) на обоих серверах
...
Рейтинг: 0 / 0
29.09.2020, 14:50
    #40004007
Reginar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обращение к прилинкованному серверу
спасибо!

решено, в итоге, через OPENQUERY:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
DECLARE @sql AS NVARCHAR(MAX);
SET @sql = '
SELECT * FROM OPENQUERY ([Server1], ''EXEC [db1].[dbo].[sproc1] @DateForReport = ''''' + @day + ''''');'

DECLARE @tReport TABLE (
	  [f1] NVARCHAR(40)
	, [f2] VARCHAR(40)
)
INSERT INTO @tReport (
	  [f1]
	, [f2]
)
EXEC sp_executesql @sql




В таком варианте отлично всё сложилось в табличную переменную
...
Рейтинг: 0 / 0
29.09.2020, 15:50
    #40004036
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обращение к прилинкованному серверу
(удалено)
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / обращение к прилинкованному серверу / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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