Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Ошибка при создании CLR сборки на MS SQL Server 2012  [new]
ASukhov1986
Member

Откуда: РФ, Москва
Сообщений: 252
Здравствуйте, у меня есть dll, написанная на C#, содержит следующие классы:
namespace DbServices
{
    public class JsonType
    {
        public string Key { get; set; }
        public string Value { get; set; }

    }
}


using System.Collections.Generic;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
using Newtonsoft.Json;

namespace DbServices
{
    public class UserDefinedFunctions
    {

        /// <summary>
        /// Метод конвертирования JSON строки в строго типизированную коллекцию
        /// </summary>
        /// <param name="jsonSource">Json строка. Шаблон строки: [{"Key": "Key_Value1", "Value": "Value_Value1"},{"Key": "Key_Value2", "Value": "Value_Value2"},...]</param>
        /// <returns></returns>
        [SqlFunction(FillRowMethodName = "FillRow")]
        public IEnumerable<JsonType> JsonDeserializeObject(string jsonSource)
        {
            return JsonConvert.DeserializeObject<JsonType[]>(jsonSource);
        }

        //Этот служебный метод нужен для получения одной строки набора данных и приведения её
        public static void FillRow(JsonType row, out SqlString key,out SqlString value )
        {
            key = row.Key;
            value = row.Value;
        }

    }
}


На MS SQL Server выполняю следующие действия:
sys.sp_configure @configname = 'show advanced options', -- varchar(35)
    @configvalue = 1 
-- int
    GO
RECONFIGURE
    GO
sys.sp_configure @configname = 'clr enabled', -- varchar(35)
    @configvalue = 1 
-- int
    GO
RECONFIGURE
    GO
USE DBExamples;
    GO
ALTER DATABASE DBExamples SET TRUSTWORTHY ON
    GO
USE DBExamples;
    GO
CREATE ASSEMBLY ClrDbServices AUTHORIZATION dbo FROM 'c:\ExampleProgramms\MS SQL SERVER\SQLCLR\Utils\Utils\bin\Release\DbServices.dll'
WITH PERMISSION_SET = UNSAFE



Последняя команды выполняется с ошибкой:
Сообщение 10301, уровень 16, состояние 1, строка 1
Assembly 'DbServices' references assembly 'system.runtime.serialization, version=4.0.0.0, culture=neutral, publickeytoken=b77a5c561934e089.', which is not present in the current database. SQL Server attempted to locate and automatically load the referenced assembly from the same location where referring assembly came from, but that operation has failed (reason: 2(Не удается найти указанный файл.)). Please load the referenced assembly into the current database and retry your request.


Вопрос: Как устранить данную ошибку?
P.S.
Библиотеку Newtonsoft.Json.dll я загружал через NuGet.
25 сен 18, 13:55    [21685429]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создании CLR сборки на MS SQL Server 2012  [new]
Const123
Member

Откуда:
Сообщений: 26
ASukhov1986,
А из бинарной сборки собирается?
А еще проверь окружение компилятора, может он какие-то депенденси в итоговом коде не находит, впрочем, если dll получилась, то это уже хорошо.
25 сен 18, 14:54    [21685512]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создании CLR сборки на MS SQL Server 2012  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1368
ASukhov1986,

оно вам ругается что в вашей сборке есть ссылка на сборку сериализации. ее тоже необходимо загрузить.
25 сен 18, 15:24    [21685555]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создании CLR сборки на MS SQL Server 2012  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
felix_ff
ASukhov1986,

оно вам ругается что в вашей сборке есть ссылка на сборку сериализации. ее тоже необходимо загрузить.

Автор темы - гуглите по "CREATE ASSEMBLY System_Runtime_Serialization".
25 сен 18, 15:30    [21685564]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить