Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как запустить функцию из другой БД?  [new]
Алекс_1981
Member

Откуда:
Сообщений: 20
Не могу в своей БД запустить скалярную функцию, которая находится в другой БД. Базы между собой залинкованы. Представления получается запускать, а функции нет.
Пишу так (где Base название другой базы):
select pole1, pole2, Base.dbo.f_fun(argument) from Base.dbo.Table
30 июл 18, 16:32    [21615481]     Ответить | Цитировать Сообщить модератору
 Re: Как запустить функцию из другой БД?  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
Добрый день.
А код ошибки предполагается угадать?
30 июл 18, 16:32    [21615489]     Ответить | Цитировать Сообщить модератору
 Re: Как запустить функцию из другой БД?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36686
Алекс_1981
Базы между собой залинкованы.
Что-что базы межуд собой?
30 июл 18, 16:34    [21615495]     Ответить | Цитировать Сообщить модератору
 Re: Как запустить функцию из другой БД?  [new]
Алекс_1981
Member

Откуда:
Сообщений: 20
Гавриленко Сергей Алексеевич
Алекс_1981
Базы между собой залинкованы.
Что-что базы межуд собой?
они связаны между собой Linked Servers
30 июл 18, 16:54    [21615598]     Ответить | Цитировать Сообщить модератору
 Re: Как запустить функцию из другой БД?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Алекс_1981
Гавриленко Сергей Алексеевич
пропущено...
Что-что базы межуд собой?
они связаны между собой Linked Servers

а в слове Linked Servers ничего не смущает?
30 июл 18, 16:54    [21615600]     Ответить | Цитировать Сообщить модератору
 Re: Как запустить функцию из другой БД?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36686
Алекс_1981
Гавриленко Сергей Алексеевич
пропущено...
Что-что базы межуд собой?
они связаны между собой Linked Servers
В вашем коде нет обращения к базам на linked-серверах.
30 июл 18, 16:56    [21615608]     Ответить | Цитировать Сообщить модератору
 Re: Как запустить функцию из другой БД?  [new]
Алекс_1981
Member

Откуда:
Сообщений: 20
с утра на работе, привожу пример своего скрипта:
SELECT [Поле_1] , [Поле_2], NameServer.NameBD.dbo.f_NameFunction(Argument) FROM NameServer.NameBD.Table

Выдает ошибку:
Remote function reference 'NameServer.NameBD.dbo.f_NameFunction' is not allowed, and the column name 'NameServer' could not be or is ambiguos

А если представление вызываю из этой БД (NameServer.NameBD), то все работает. Как правильно вызвать функцию?
31 июл 18, 06:06    [21616440]     Ответить | Цитировать Сообщить модератору
 Re: Как запустить функцию из другой БД?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30712
Алекс_1981
с утра на работе, привожу пример своего скрипта:
SELECT [Поле_1] , [Поле_2], NameServer.NameBD.dbo.f_NameFunction(Argument) FROM NameServer.NameBD.Table

Выдает ошибку:
Remote function reference 'NameServer.NameBD.dbo.f_NameFunction' is not allowed, and the column name 'NameServer' could not be or is ambiguos
Установите опцию rpc out у линкед сервера.
31 июл 18, 10:57    [21617009]     Ответить | Цитировать Сообщить модератору
 Re: Как запустить функцию из другой БД?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Алекс_1981,
Скалярную функцию, если не ошибаюсь так не вызвать. Вариант создать локальную с запросом на внешнюю, или OPENQUERY
31 июл 18, 11:00    [21617024]     Ответить | Цитировать Сообщить модератору
 Re: Как запустить функцию из другой БД?  [new]
Алекс_1981
Member

Откуда:
Сообщений: 20
TaPaK
Алекс_1981,
Скалярную функцию, если не ошибаюсь так не вызвать. Вариант создать локальную с запросом на внешнюю, или OPENQUERY

Подскажи пжл как?
31 июл 18, 11:03    [21617042]     Ответить | Цитировать Сообщить модератору
 Re: Как запустить функцию из другой БД?  [new]
Konst_One
Member

Откуда:
Сообщений: 11512
а почему нельзя сделать аналогичную функцию на вашем сервере?
31 июл 18, 11:08    [21617052]     Ответить | Цитировать Сообщить модератору
 Re: Как запустить функцию из другой БД?  [new]
Алекс_1981
Member

Откуда:
Сообщений: 20
Konst_One
а почему нельзя сделать аналогичную функцию на вашем сервере?

Параметры с того сервера подставлять в функцию на моем сервере? может быть и можно, я не пробовал.
31 июл 18, 11:39    [21617149]     Ответить | Цитировать Сообщить модератору
 Re: Как запустить функцию из другой БД?  [new]
Алекс_1981
Member

Откуда:
Сообщений: 20
TaPaK
Алекс_1981,
Скалярную функцию, если не ошибаюсь так не вызвать. Вариант создать локальную с запросом на внешнюю, или OPENQUERY

попробовал OPENQUERY - получилось. спасибо за подсказку.
Мой код:
declare @sql nvarchar(max)='';
set @sql='SELECT [Поле_1] , [Поле_2], dbo.f_NameFunction(Argument) FROM Table'
set @sql='SELECT * FROM OPENQUERY([Name_Server],'+@sql+')'
exec sp_executesql @sql

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

Кто подскажет, как такой скрипт сохранить во View ?
31 июл 18, 12:08    [21617326]     Ответить | Цитировать Сообщить модератору
 Re: Как запустить функцию из другой БД?  [new]
Konst_One
Member

Откуда:
Сообщений: 11512
никак
31 июл 18, 12:10    [21617335]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить