зарегистрировать C # сборку и использовать функции в SQL Server - PullRequest
0 голосов
/ 04 августа 2011

Предположим, у меня есть статический класс в 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 #, я только собирал его, как любую другую программу, могу ли я добавить что-то еще ...

  • Что это за мизинг?

1 Ответ

1 голос
/ 04 августа 2011

Я подозреваю, что ему не нравится консольное приложение ...

Пошаговое руководство см. http://www.setfocus.com/technicalarticles/articles/clrfunctionforsqlserver.aspx

Некоторые интересные ресурсы смотрите http://msdn.microsoft.com/en-us/library/w2kae45k.aspx

...