none
Создание "системной" определяемой пользователем функции

    Вопрос

  • В SQL 2000 можно было сделать system_function_schema владельцем функции хранимой процедурой sp_changeobjectowner.

    Эта хранимая процедура работает только с объектами, доступными в Microsoft SQL Server 2000. В будущей версии Microsoft SQL Server эта возможность будет удалена. Избегайте использования этой возможности в новых разработках и запланируйте изменение существующих приложений, в которых она применяется.
    Как в SQL2008?

Ответы

  • И как ?

    В теле вопроса присутствует фраза.

    В SQL 2000 можно было сделать system_function_schema владельцем функции хранимой процедурой sp_changeobjectowner.

    Соответственно работали с SQL 2000

    А вы пишете "так же, как и в 2005ом"

    Ваш первый пост в этом топике был закончен вопросом: Как в SQL2008?

    А если по сути, то НИКАК (если верить документации), но есть обходная возможность (используйте на свой страх и риск)

    USE mssqlsystemresource
    GO
    
    ALTER DATABASE mssqlsystemresource SET READ_WRITE
    GO
    
    -- Ваша функция
    CREATE FUNCTION dbo.fn_MyFunction()
    RETURNS NVARCHAR(255)
    AS
    BEGIN
    RETURN @@VERSION
    END
    GO
    
    -- Публикуем во все БД
    EXEC sys.sp_SetPublicInterfaceObject 'fn_MyFunction'
    GO
    
    ALTER DATABASE mssqlsystemresource SET READ_ONLY
    GO
    Перезапустить сервак не забудьте
    • Предложено в качестве ответа Alexey KnyazevMVP, Editor 8 июня 2009 г. 5:40
    • Помечено в качестве ответа AndreyPK 10 июня 2009 г. 12:59
    5 июня 2009 г. 16:23
    Отвечающий

Все ответы

  • так же, как и в 2005ом

    Отвечающий
  • И как ?

    В теле вопроса присутствует фраза.

    В SQL 2000 можно было сделать system_function_schema владельцем функции хранимой процедурой sp_changeobjectowner.

    Соответственно работали с SQL 2000

    А вы пишете "так же, как и в 2005ом"
  • И как ?

    В теле вопроса присутствует фраза.

    В SQL 2000 можно было сделать system_function_schema владельцем функции хранимой процедурой sp_changeobjectowner.

    Соответственно работали с SQL 2000

    А вы пишете "так же, как и в 2005ом"

    Ваш первый пост в этом топике был закончен вопросом: Как в SQL2008?

    А если по сути, то НИКАК (если верить документации), но есть обходная возможность (используйте на свой страх и риск)

    USE mssqlsystemresource
    GO
    
    ALTER DATABASE mssqlsystemresource SET READ_WRITE
    GO
    
    -- Ваша функция
    CREATE FUNCTION dbo.fn_MyFunction()
    RETURNS NVARCHAR(255)
    AS
    BEGIN
    RETURN @@VERSION
    END
    GO
    
    -- Публикуем во все БД
    EXEC sys.sp_SetPublicInterfaceObject 'fn_MyFunction'
    GO
    
    ALTER DATABASE mssqlsystemresource SET READ_ONLY
    GO
    Перезапустить сервак не забудьте
    • Предложено в качестве ответа Alexey KnyazevMVP, Editor 8 июня 2009 г. 5:40
    • Помечено в качестве ответа AndreyPK 10 июня 2009 г. 12:59
    5 июня 2009 г. 16:23
    Отвечающий