Рассмотрим процесс разработки пользовательской функции
Сначала создаём проект сборки в Microsoft Visual Studio. Пусть наша пользовательская функция получает в качестве аргумента строковую переменную, делает с ней некоторые преобразования и возвращает результат. Исходный код на C# в этом случае выглядит следующим образом:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
public partial class UserDefinedFunctions
{
[Microsoft.SqlServer.Server.SqlFunction]
public static SqlString ExtractSP(string inp)
{
// Put your code here
inp = inp + "qwswqsws";
return new SqlString(inp);
}
};
Компиллируя этот проект получим файл dll. Далее этот файл нужно разместить на сервере, для этого копируем его на сервер и в контексте рабочей базы данных выполняем код
create ASSEMBLY ExtractSP FROM 'C:\ExtractSP.dll';
Осталось создать обычную функцию вызывающую функцию из сборки, которая была только что добавлена на сервер
CREATE FUNCTION ExtractSP() RETURNS varchar(100)
AS EXTERNAL NAME ExtractSP.UserDefinedFunctions.ExtractSP
в EXTERNAL NAME первая часть имени ExtractSP это название сборки Assemblie, вторая часть UserDefinedFunctions это название класса в сборке, третья часть ExtractSP - название функции
Если предполагается регистрировать сборку в режиме UNSAFE, то параметр TRUSTWORTHY должен быть включен
ALTER DATABASE your_db_nameSET TRUSTWORTHY ON;
подробнее можно прочитать в статье Writing to an operating system file using the SQL Server SQLCLR
Комментариев нет:
Отправить комментарий