Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.10.2012, 15:32   #1
Ksardas13
Форумчанин
 
Регистрация: 24.03.2011
Сообщений: 120
Вопрос Вставить в табличную переменную результаты процедуры с удалённого сервака

Цель:
Закинуть в табличную переменную таблицу, которую возвращает процедура, лежащая на удалённом серваке.

Что имеем:
Код:
 exec SERV2.procedura13  1, 2, 3
это выдаёт норм результат в виде таблицы.


Код:
declare @new_buf_table table (ID int);
insert into @new_buf_table
  exec SERV2.procedura13  1, 2, 3
а это выдаёт ошибку
The operation could not be performed because OLE DB provider "SQLNCLI" for linked server "SERV2" was unable to begin a distributed transaction.

Вопрос:
Что делать? Оч надо в кратчайшие сроки(час-два) решить, так что кроме гугления, вопрошаю у вас.
Заранее спасибо за ответ.
Ksardas13 вне форума Ответить с цитированием
Старый 14.10.2012, 15:34   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
insert into @new_buf_table
  Select * from SERV2.procedura13(1, 2, 3)
не?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.10.2012, 15:34   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
insert into @new_buf_table
  Select * from SERV2.procedura13(1, 2, 3)
не?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.10.2012, 15:59   #4
Ksardas13
Форумчанин
 
Регистрация: 24.03.2011
Сообщений: 120
Печаль

Чтот не катит. И при таком варианте, и при следующем варианте:
Код:
 Select [IDPerson]
  into #buf_table 
  from SERV2.procedura13 (1, 2, 3)
вылетает ошибка
Remote table-valued function calls are not allowed.

попробовал ещё так
Код:
 Select * from openquery (SERV2,'SELECT * FROM procedura13 (1, 2, 3)')
Тут вылетело "Не удалось выполнить подготовку инструкций" и "Недопустимое имя объекта "procedura13"."
Под словом procedura13 правда на самом деле в моей проге написан более длинный путь... но как только я с ним не изхвращался, позитивного результата добиться не смог. А любые данные по SERV2 для меня засекречены. Единственная зацепка, что exec SERV2.procedura13 1, 2, 3 даёт ту таблицу, которую мне нужно взять, записать в переменную и поработать с ней.
Паника! Апатняк! Депресняк! Гугляк! по прежнему 50% надежды на Вас.))

О, кажись нащупал ту процедуру на втором серваке(там имя видимо динамически изменяется.... не спрашивай, я пока нуб в SQL ... это ещё не проходил).
В общем, следующая сточка:
Select * from openquery (SERV2,'SELECT * FROM procedura13 (1,2,3)')
Выдаёт ошибку:
Удаленные вызовы функций, возвращающих табличное значение, не допускаются.

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

Последний раз редактировалось Stilet; 14.10.2012 в 17:19.
Ksardas13 вне форума Ответить с цитированием
Старый 14.10.2012, 16:36   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

???
Код:
INSERT INTO @new_buf_table (ID)
  EXEC SERV2.BaseName.dbo.procedura13 (1, 2, 3)
ADD

В последних версиях (11,12) используя EXEC ... WITH можно похожего добиться
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 14.10.2012 в 16:43.
Аватар вне форума Ответить с цитированием
Старый 14.10.2012, 16:42   #6
Ksardas13
Форумчанин
 
Регистрация: 24.03.2011
Сообщений: 120
По умолчанию

Цитирую:
Incorrect syntax near '1'.
Конец цитаты.

ps: я сам в шоке...

Переформулировал твой запрос:
Код:
INSERT INTO @new_buf_table (ID)
  EXEC SERV2.BaseName.dbo.procedura13 1, 2, 3
цитирую ошибку:
OLE DB provider "SQLNCLI" for linked server "SERV2" returned message "The transaction manager has disabled its support for remote/network transactions.".
Msg 7391, Level 16, State 2, Line 3
The operation could not be performed because OLE DB provider "SQLNCLI" for linked server "SERV2" was unable to begin a distributed transaction.


*ой, фак, это кок раз и было в первом сообщении... хм... надо что нибудь съесть...

Последний раз редактировалось Stilet; 14.10.2012 в 17:20.
Ksardas13 вне форума Ответить с цитированием
Старый 14.10.2012, 16:47   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А скобки убрать возле параметров? Вижу, убраны

ADD Может поможет

http://www.google.com.ua/#hl=ru&gs_n...w=1676&bih=868
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 14.10.2012 в 16:52.
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нахождение запущенного сервака в сети. =) mazutka =) Помощь студентам 7 17.05.2013 08:30
Как вставить переменную в... kostghost Общие вопросы Delphi 12 28.11.2012 18:47
Как вставить стиль шрифта через переменную Тоба Общие вопросы Delphi 5 07.04.2012 03:58
передача имени массива в переменную процедуры KORT Общие вопросы Delphi 3 14.11.2011 15:22
Как вставить переменную в путь к файлу ? gefest58 Общие вопросы Delphi 4 19.12.2010 18:58