Предположим, у меня есть статический класс в C #:
public static class Math
{
[Microsoft.SqlServer.Server.SqlFunction]
public static int Add(int a, int b)
{
return a + b;
}
[Microsoft.SqlServer.Server.SqlProcedure]
public static void Void(int a, int b)
{
}
static void Main(string[] args)
{
}
}
По ответу @ faester я знаю, что для использования этой функции в SQL мы делаем:
EXEC SP_CONFIGURE 'clr enabled', 1
GO
RECONFIGURE
GO
-- CONSIDER: DROP ASSEMBLY SqlClr
GO
CREATE ASSEMBLY SqlClr
FROM 'pathtoassembly'
WITH PERMISSION_SET = SAFE;
GO
SELECT * FROM sys.assemblies
GO
CREATE FUNCTION [MathAdd] (@a int, @b int)
RETURNS INT
AS EXTERNAL NAME [SqlClr].Math.[Add]
GO
CREATE PROCEDURE [Void] @a INT, @b INT
AS EXTERNAL NAME [SqlClr].Math.[Void]
GO
SELECT dbo.MathAdd (1, 2)
EXEC void 1, 2
Для этого примера сначала я добавил main в файл c #
using System;
using System.Collections.Generic;
using System.Text;
public static class Math
{
[Microsoft.SqlServer.Server.SqlFunction]
public static int Add(int a, int b)
{
return a + b;
}
[Microsoft.SqlServer.Server.SqlProcedure]
public static void Void(int a, int b)
{
}
static void Main(string[] args)
{
}
}
Итак, когда я выполняю код SQL ... Какой путь мне добавить. Я делал:
CREATE ASSEMBLY SqlClr
FROM 'C:\Visual Studio 2005\Projects\ConsoleApplication1\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe'
WITH PERMISSION_SET = SAFE;
GO
Очевидно, я не должен добавлять .exe , поэтому пробовал с файлом sln и файлом cs, но не могу заставить его работать ...
Я получаю следующее сообщение об ошибке:
Параметр конфигурации 'clr enabled' изменен с 1 на 1. Запустите
Инструкция RECONFIGURE для установки. Сообщение 6501, уровень 16, состояние 7, строка 1
Ошибка CREATE ASSEMBLY, так как не удалось открыть физический файл
"C: \ Visual Studio
2005 \ Projects \ ConsoleApplication1 \ ConsoleApplication1 \ Bin \ Debug \ ConsoleApplication1.exe ":
5 (Доступ запрещен).
Мой вопрос, кроме того, что поместить в путь , касается того, как создать код c #, я только собирал его, как любую другую программу, могу ли я добавить что-то еще ...