1. Не стоит пытаться привязать к SQL 2005, 2008 сборку .NET 4.0 вот тут про это писано. Ждем SQL 2012.
2. Как посмотреть какая версия CLR сейчас доступна:
select * from sys.dm_clr_properties
у меня результат был такой:
directory C:\Windows\Microsoft.NET\Framework64\v2.0.50727\
version v2.0.50727
state CLR is initialized
Не долго думая я забахал проект ClassLibrary именно во 2 фреймворке.
Что-то типа того:
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SqlServer.Server;
namespace hwsql
{
public class msql
{
public msql()
{
}
[SqlProcedure]
public static void HelloWorld(string inputString,out string outString)
{
outString=inputString+"!!!";
}
}
}
Дальше нужно было заругить полученную dll. Все сделал как тут и тут написано.using System.Collections.Generic;
using System.Text;
using Microsoft.SqlServer.Server;
namespace hwsql
{
public class msql
{
public msql()
{
}
[SqlProcedure]
public static void HelloWorld(string inputString,out string outString)
{
outString=inputString+"!!!";
}
}
}
Т.е. включил clr интеграцию или вернее разрешил и задал опицию базы
trustworthy.
EXEC sp_configure 'clr enabled', 1
GO
RECONFIGURE
GO
ALTER DATABASE BANKDBTEST SET TRUSTWORTHY ON
Теперь можно регистрировать ассембли(сборку). Все тоже как бы элементарно:
CREATE ASSEMBLY hwsql
FROM 'C:\massembly\hwsql.dll'
WITH PERMISSION_SET = SAFE
понятно, что путь должен быть на серваке. Кстати все это можно делать через графический интерфейс Microsoft SQL Management Studio. На базе в Programmability-Assemblyes.
Теперь самое интересное - создаем хранимую процедуру.
CREATE PROCEDURE mNetAssemblyHello
(
@in nvarchar(200),
@out nvarchar(MAX) OUTPUT
)
AS EXTERNAL NAME hwsql.[hwsql.msql].HelloWorld
Вот тут есть интересная штука имя неймспейса и класса рекомендуется задавать после имени зарегистрированного на сервере ассембли, т.е. я назвал ассембли hwsql и намеспейс у меня так же зовется получим конструкцию
hwsql.[hwsql.msql].HelloWorl тут так написано
Еще статьи на эту тему:
тут и тут, вот тут интересно, еще. Ну а это обязательно читать. Introduction to SQL Server CLR Integration