powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как вытащить данные со связанного сервера?
25 сообщений из 25, страница 1 из 1
Как вытащить данные со связанного сервера?
    #40072402
Здравствуйте!

Нужно получать данные с другого связанного сервера. Он у меня виден в дереве объектов.
Пробую получить данные:
Код: sql
1.
2.
3.
SELECT 
* 
FROM [IP связанного сервера].имя_БД.схема.Имя_табличной_функции('параметр1', 'параметр2', 'параметр3')


И получаю:
авторУдаленные вызовы функций, возвращающих табличное значение, не допускаются.
Пробовал через
Код: sql
1.
SELECT * FROM OPENQUERY(Идентификатор_связанного_сервера, 'SELECT * FROM [IP связанного сервера].имя_БД.схема.Имя_табличной_функции(''параметр1'', ''параметр2'', ''параметр3'')')


примерно тоже самое ответило.
Как правильно получать данные со связанного сервера?

желаю Вам счастья
...
Рейтинг: 0 / 0
Как вытащить данные со связанного сервера?
    #40072408
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Борис Гаркун,

"SQL Server Linked Server Limitations
Linked Servers can be very useful, but there are a few limitations of which to be aware before implementing them. Linked Servers cannot be used to call table valued or scalar functions. Also, the truncate command is not allowed to be called using a Linked Server."
https://www.mssqltips.com/sqlservertip/6083/understanding-sql-server-linked-servers

создайте представление (view) и попробуйте выгружать его
...
Рейтинг: 0 / 0
Как вытащить данные со связанного сервера?
    #40072416
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Борис Гаркун
Пробовал через
Код: sql
1.
SELECT * FROM OPENQUERY(Идентификатор_связанного_сервера, 'SELECT * FROM [IP связанного сервера].имя_БД.схема.Имя_табличной_функции(''параметр1'', ''параметр2'', ''параметр3'')')

[IP связанного сервера] уберите.
...
Рейтинг: 0 / 0
Как вытащить данные со связанного сервера?
    #40072421
invm
[IP связанного сервера] уберите.

Спасибо! Заработало!
Получается я компаную строку нужными параметрами и вперед, все будет работать?
...
Рейтинг: 0 / 0
Как вытащить данные со связанного сервера?
    #40072426
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Борис Гаркун,

Код: sql
1.
exec('SELECT * FROM имя_БД.схема.Имя_табличной_функции(?, ?, ?)', @параметр1, @параметр2, @параметр3) at Идентификатор_связанного_сервера;
...
Рейтинг: 0 / 0
Как вытащить данные со связанного сервера?
    #40072453
invm,

а как сервер в этом варианте поймет, что нужно обратиться к функции прилинкованного сервера?
...
Рейтинг: 0 / 0
Как вытащить данные со связанного сервера?
    #40072461
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Борис Гаркун,


Код: sql
1.
exec('SELECT * FROM имя_БД.схема.Имя_табличной_функции(?, ?, ?)', @параметр1, @параметр2, @параметр3) at Идентификатор_связанного_сервера;
...
Рейтинг: 0 / 0
Как вытащить данные со связанного сервера?
    #40072463
felix_ff,

слона то я и не заметил. Спасибо!
...
Рейтинг: 0 / 0
Как вытащить данные со связанного сервера?
    #40072544
Пока вариант с exec не работает("Сервер "..." не настроен для RPC").
Поэтому пробую заставить работать вариант с openquery вот так:
Код: sql
1.
2.
INSERT #stek(dev_is_set, kWh_charge, rub_charge, rub_payment, kWh_charge_appg, rub_charge_appg,	rub_payment_appg)
SELECT * FROM OPENQUERY(linked_server , 'SELECT * FROM sevkav_fl_dagen.stack.GetPSPDatabyLSNumber(''' + @D_Date0 + ''', ''' + @pa_number + ''', ''' + @dev_number + ''')')


Но компилятору не нравится +:
авторНеправильный синтаксис около конструкции "+".
Как можно исправить вариант OPENQUERY?
...
Рейтинг: 0 / 0
Как вытащить данные со связанного сервера?
    #40072550
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Борис Гаркун,

Вложенный динамический SQL. С четверными кавычками, да.

Лучше включить RPC.
...
Рейтинг: 0 / 0
Как вытащить данные со связанного сервера?
    #40072614
Ennor Tiegael,

да я не против, но пока не получается у админов включить. На EXEC теперь такое возвращается:
авторПоставщик OLE DB "SQLNCLI11" для связанного сервера "х" вернул сообщение "Эта транзакция уже была явно или неявно зафиксирована или отменена".
Msg 7391, Level 16, State 2, Line 825
Операция не может быть выполнена, так как поставщику OLE DB "SQLNCLI11" для связанного сервера "х" не удалось начать распределенную транзакцию.


А как в вариант с OPENQUERY добавить свои переменные?
...
Рейтинг: 0 / 0
Как вытащить данные со связанного сервера?
    #40072626
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Борис Гаркун,

А это уже MSDTC. Причин может быть множество, начать можно, например, отсюда .
...
Рейтинг: 0 / 0
Как вытащить данные со связанного сервера?
    #40095548
Здравствуйте!

Скажите, можно ли на связанном сервере запустить скрипт, хранящийся в строковой переменной?
...
Рейтинг: 0 / 0
Как вытащить данные со связанного сервера?
    #40095553
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Борис Гаркун
Здравствуйте!

Скажите, можно ли на связанном сервере запустить скрипт, хранящийся в строковой переменной?

можно
например
Код: sql
1.
exec ('declare @s varchar(50) ; set @s=db_name(); exec sp_executesql N''select @@servername [srv], @var [db]'',N''@var varchar(50)'',@var=@s') at [LINKED]


...
Рейтинг: 0 / 0
Как вытащить данные со связанного сервера?
    #40095556
komrad, спасибо.
Просто у меня команда типа:
Код: sql
1.
2.
INSERT #b08_results([Number],[GroupName],[GroupName2],[C_Name],[ed_izm],[Total],[CN2],[NN],[Total_Dop],CN2_Dop],[NN_Dop],[Disagree],[B_Visible],[Color],[B_Bold],[N_Code],[N_Sum_Technic]) 
	EXEC(@definition) at [127.0.0.1] -- [CurrentServer]


выдает ошибку:
авторИспользовать связанные серверы в режиме олицетворения без сопоставления с олицетворяемым именем для входа нельзя.
...
Рейтинг: 0 / 0
Как вытащить данные со связанного сервера?
    #40095558
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Борис Гаркун,
покажите закладку Security вашего линкед сервера
...
Рейтинг: 0 / 0
Как вытащить данные со связанного сервера?
    #40095560
komrad,
...
Рейтинг: 0 / 0
Как вытащить данные со связанного сервера?
    #40095570
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Борис Гаркун,

попробуйте в качестве теста использовать sql логин с нужными привилегиями (опция "be made using this security context")

приведите номер получаемой ошибки
...
Рейтинг: 0 / 0
Как вытащить данные со связанного сервера?
    #40095598
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Борис Гаркун
Здравствуйте!

Скажите, можно ли на связанном сервере запустить скрипт, хранящийся в строковой переменной?


А смысл какой использовать связанный сервер в ETL задачах? Используйте SSIS для загрузки данных. Вы же не носите по одному кирпичу со вклада, а берете грузовик.
...
Рейтинг: 0 / 0
Как вытащить данные со связанного сервера?
    #40095643
komrad,

авторMsg 18456, Level 14, State 1, Line 7
При входе в систему пользователя "EIVK\Garkun-bn" произошла ошибка.
...
Рейтинг: 0 / 0
Как вытащить данные со связанного сервера?
    #40095644
Владислав Колосов,

я пытаюсь обойти запрет на INSERT EXEC, который срабатывает из-за того, что внутри запускаемой ХП уже есть такая конструкция
...
Рейтинг: 0 / 0
Как вытащить данные со связанного сервера?
    #40095661
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Борис Гаркун,

такой скрипт отрабатывает?

Код: sql
1.
2.
3.
4.
5.
6.
7.
declare @tbl table (dt datetime default getdate(),srv sysname,usr sysname)
declare @cmd varchar(50) = 'select @@servername,original_login()'

insert into @tbl (srv,usr)
exec (@cmd) at [LINKED]

select * from @tbl
...
Рейтинг: 0 / 0
Как вытащить данные со связанного сервера?
    #40095684
komrad, да. Показывает заполненную таблицу с датой, названием сервера и моим логином
...
Рейтинг: 0 / 0
Как вытащить данные со связанного сервера?
    #40095701
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Борис Гаркун
komrad, да. Показывает заполненную таблицу с датой, названием сервера и моим логином

значит механизм работает
разбирайтесь, что не так с вашей @definition

EXEC(@definition) at [127.0.0.1]

попробуйте запустить просто exec, без insert
...
Рейтинг: 0 / 0
Как вытащить данные со связанного сервера?
    #40096272
komrad,

оказывается надо было создать пользователя, через которого бы проходили запросы к связанному серверу
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как вытащить данные со связанного сервера?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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