Вызов функций главной БД из другой БД на том же Azure SQL Server

У меня есть сервер базы данных Azure SQL + одна база данных SQL Azure. В этой БД у меня есть функции, которые вызывают некоторые функции главной БД как часть их логики.

Пример:

CREATE FUNCTION [dbo].[EncryptByKey]
(
    @EncryptionKeyId nvarchar(1024),
    @ValueToEncrypt varchar(MAX)
)
RETURNS VARCHAR(MAX)
AS
BEGIN
    RETURN master.dbo.fn_varbintohexstr(ENCRYPTBYKEY(Key_GUID(@EncryptionKeyId), @ValueToEncrypt))
END

Выдает мне ошибку:

Не удается найти ни столбец "master", ни определяемую пользователем функцию, ни совокупность "master.dbo.fn_varbintohexstr", либо имя неоднозначно.

Если вместо этого я попробую:

exec master.dbo.fn_varbintohexstr(123)

Ошибка, которую я получаю:

Ссылка на имя базы данных и/или сервера в master.dbo.fn_varbintohexstr не поддерживается в этой версии SQL Server.

Существуют ли какие-либо решения о том, как использовать функции главной БД из пользовательских БД на сервере Azure SQL?


person Vladimir Glushkov    schedule 16.10.2017    source источник
comment
Почему вы используете EXEC вместо SELECT? выберите master.dbo.fn_varbintohexstr(123)   -  person sepupic    schedule 16.10.2017
comment
@sepupic, пожалуйста, прочитайте внимательно. Пример с exec используется только для получения более правильного сообщения об ошибке. Выбор тоже не работает.   -  person Vladimir Glushkov    schedule 16.10.2017
comment
stackoverflow.com/questions/11284998 /   -  person sepupic    schedule 16.10.2017
comment
@sepupic спасибо, что указали на это, я прочитаю статью MS, упомянутую в вашей ссылке.   -  person Vladimir Glushkov    schedule 16.10.2017


Ответы (1)


Вы не можете использовать распределенные запросы к базе данных, используя имена из трех или четырех частей в SQL Azure.

Для запросов, которые охватывают несколько баз данных в SQL Azure, необходимо использовать эластичные запросы. Для получения дополнительной информации посетите эту< /а> статья.

person Alberto Morillo    schedule 16.10.2017