Создание системной функции в MS SQL Server 2008Источник: t-sql
В очередной раз на форуме встретил вопрос: "Создание системной функции в MS SQL Server 2008". Как известно, в SQL Server 2000 эта задача решалась достаточно легко и без малой крови (How to Write Your Own System Functions). Но как всё-таки решить подобную задачу на SQL Server 2005/2008? Вниманиене рекомендую им пользоваться!!!
1) Останавливаем наш SQL Server 2) Запускаем его в монопольном режиме (с флагом -m): 3) Создаём нашу функцию в системной БД (скрытой в обычном режиме работы SQL Server`а) mssqlsystemresource 01. USE mssqlsystemresource 02. GO 03. 04. -- Включаем возможность изменения данный в БД Resource 05. ALTER DATABASE mssqlsystemresource SET READ_WRITE 06. GO 07. 08. -- Ваша функция 09. CREATE FUNCTION dbo.fn_MyFunction() 10. RETURNS NVARCHAR (255) 11. AS 12. BEGIN 13. RETURN @@VERSION 14. END 15. GO 16. 17. -- Публикуем во все БД 18. EXEC sys.sp_SetPublicInterfaceObject 'fn_MyFunction' 19. GO 20. 21. -- Возвращаем БД Resource в режим "только чтение" 22. ALTER DATABASE mssqlsystemresource SET READ_ONLY 23. GO 4) Перестартовываем наш SQL Server в обычном режиме 5) Пользуемся нашей-системной функцией в контексте любой БД PS: Так как БД mssqlsystemresource хранит все системные объекты, то при установке очередного SP обновиться вся эта база, соответственно и ваши "системные" функции исчезнут и их придётся создавать заново. |