среда, 17 декабря 2008 г.

CLR user-defined functions

Рассмотрим процесс разработки пользовательской функции

Сначала создаём проект сборки в 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




Комментариев нет:

Locations of visitors to this page