Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Clr-хранимка тащит вагон зависимостей. / 13 сообщений из 13, страница 1 из 1
06.10.2016, 15:27
    #39322023
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Clr-хранимка тащит вагон зависимостей.
Написал библиотеку, которая делает soap-запрос и возвращает данные в mssql в виде таблицы. Сначала wsdl был кривой, запрос приходилось делать через вебреквест, отправляя постом xml-текст, ответ дербанить через XmlDocument, но все работало. Потом wsdl починили, библиотека сократилась до нескольких строк, но create assembly работать перестало и начало выдавать ошибку Assembly 'SOAP1C' references assembly system.runtime.serialization и т.д.

Эксперимента ради скопировал system.runtime.serialization.dll к SOAP1C.dll, но serialization потащила свои собственные зависимости. Скопировал SOAP1C в папку ко фреймворку, все в итоге обломилось на библиотеке, заголовок которой mssql не смог разобрать.

Однако здесь http://www.t-sql.ru/post/SMSCLR.aspx автор тоже делает soap-клиента к mssql (только у него web reference, а у меня service reference), и у него проблем нет. Что же я делаю не правильно?
...
Рейтинг: 0 / 0
06.10.2016, 15:30
    #39322025
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Clr-хранимка тащит вагон зависимостей.
Полный текст ошибки

авторAssembly 'SOAP1C' 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.
...
Рейтинг: 0 / 0
06.10.2016, 15:45
    #39322045
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Clr-хранимка тащит вагон зависимостей.
AntonariyЧто же я делаю не правильно?
всякую каку на сервер тащишь

ЗЫ это моё личное мнение - нехер на сервер всякие java и clr тащить
...
Рейтинг: 0 / 0
10.10.2016, 17:24
    #39323929
it17
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Clr-хранимка тащит вагон зависимостей.
Antonariy,

Для CLR по SOAP нужно 2 библиотеки.
Основная деплоится автоматически, serialization - надо подтягивать вручную.
Но не в папку к фреймворку, а к самой сборке
Под рукой нет сервера с CLR, но по памяти примерно так:
Стать на каталог Assemblies - добавить библиотеку, выбрать serialization из папки с релизом
С свойствах проекта должна стоять галочка "Генерировать serialization "
...
Рейтинг: 0 / 0
10.10.2016, 20:47
    #39324054
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Clr-хранимка тащит вагон зависимостей.
Генерировал, но она сама ссылается на runtime.serialization

авторСтать на каталог Assemblies - добавить библиотеку, выбрать serialization из папки с релизом
С свойствах проекта должна стоять галочка "Генерировать serialization "
это непонятно. генерировал serialization как указано в ссылке, да и в принципе не ясно, зачем она нужна, на нее же даже ссылок нет.
...
Рейтинг: 0 / 0
11.10.2016, 09:44
    #39324216
VAlexey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Clr-хранимка тащит вагон зависимостей.
Antonariyавтор тоже делает soap-клиента к mssql (только у него web reference, а у меня service reference), и у него проблем нет. Что же я делаю не правильно?
Service reference в CLR-сборках для SQL Server не надо использовать.
Смотрим сюда: https://msdn.microsoft.com/en-us/library/ms403279.aspx. Это список системных сборок, которые загружаются автоматически. Ищем там System.Runtime.Serialization.dll... и не находим.
Поэтому если мы хотим использовать эту сборку, то её (и все зависимые сборки) тоже необходимо опубликовать в БД с помощью CREATE ASSEMBLY..., но при установке любого обновления windows update, которые меняют сборки .net есть шанс, что все сломается и придется обновлять эти системные сборки в БД.
Так что используйте Web Reference и будет все хорошо.

Antonariyэто непонятно. генерировал serialization как указано в ссылке, да и в принципе не ясно, зачем она нужна, на нее же даже ссылок нет.
Сборка XmlSerializers нужна, так как для сериализации и десериализации Web Reference использует класс XmlSerializer, который налету генерирует временные сборки. Что в процессе SQL Server не работает. Поэтому нужны предварительно скомпилированные классы для сериализации/десериализации.
...
Рейтинг: 0 / 0
11.10.2016, 10:06
    #39324234
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Clr-хранимка тащит вагон зависимостей.
Antonariyкоторая делает soap-запрос и возвращает данные в mssql в виде таблицы.
Код: c#
1.
MSSQL => sp_OACreate => COM Expose => .Net


Если организовать по такой схеме, то можно использовать полноценный .Net Framework в процессе MSSQL. Такое работает с MSSQL2000 + .Net2. На других версиях не проверял.

зы: Как советовали выше, лучше бросить заниматься мутотой и перейти на 3-х звенку.
...
Рейтинг: 0 / 0
11.10.2016, 10:31
    #39324257
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Clr-хранимка тащит вагон зависимостей.
VAlexeyAntonariyавтор тоже делает soap-клиента к mssql (только у него web reference, а у меня service reference), и у него проблем нет. Что же я делаю не правильно?
Service reference в CLR-сборках для SQL Server не надо использовать.
Смотрим сюда: https://msdn.microsoft.com/en-us/library/ms403279.aspx. Это список системных сборок, которые загружаются автоматически. Ищем там System.Runtime.Serialization.dll... и не находим.
Поэтому если мы хотим использовать эту сборку, то её (и все зависимые сборки) тоже необходимо опубликовать в БД с помощью CREATE ASSEMBLY..., но при установке любого обновления windows update, которые меняют сборки .net есть шанс, что все сломается и придется обновлять эти системные сборки в БД.
Так что используйте Web Reference и будет все хорошо.Понял. Тут проблема лишь в том, что сервис, к которому я обращаюсь, не воспринимает запросы, сформированные через Web Reference, ошибку выдает.

VAlexeyAntonariyэто непонятно. генерировал serialization как указано в ссылке, да и в принципе не ясно, зачем она нужна, на нее же даже ссылок нет.
Сборка XmlSerializers нужна, так как для сериализации и десериализации Web Reference использует класс XmlSerializer, который налету генерирует временные сборки. Что в процессе SQL Server не работает. Поэтому нужны предварительно скомпилированные классы для сериализации/десериализации.А как ее использовать в проекте? Скомпилировать и подключить вместо XmlSerializer?
...
Рейтинг: 0 / 0
11.10.2016, 11:41
    #39324338
VAlexey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Clr-хранимка тащит вагон зависимостей.
AntonariyА как ее использовать в проекте? Скомпилировать и подключить вместо XmlSerializer?
Нет. Если используется конструктор XmlSerializer с 1 параметром, то сборка XmlSerializers загружается автоматически. Reference на нее не требуется.
В случае CLR сборок, сборка XmlSerializers должна быть опубликована так же как и основная сборка (CREATE ASSEBLY имясборки.XmlSerializers FROM '<путь к файлy>') после публикации основной сборки.

AntonariyПонял. Тут проблема лишь в том, что сервис, к которому я обращаюсь, не воспринимает запросы, сформированные через Web Reference, ошибку выдает.
Либо полностью отказаться вызывать из SQL, либо использовать промежуточный веб-сервис, который будет дергать в нужном формате.
...
Рейтинг: 0 / 0
11.10.2016, 11:54
    #39324354
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Clr-хранимка тащит вагон зависимостей.
VAlexeyЛибо полностью отказаться вызывать из SQL, либо использовать промежуточный веб-сервис, который будет дергать в нужном формате.Либо использовать простой веб реквест, как я и делаю.
...
Рейтинг: 0 / 0
11.10.2016, 13:36
    #39324460
it17
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Clr-хранимка тащит вагон зависимостей.
Antonariy,

Примерно так как тут написано

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE ASSEMBLY CLRProcedures FROM 'C:\demos\CSTruter.com\CLRSQL\bin\Release\SourceAssembly.dll' 
WITH PERMISSION_SET = UNSAFE
GO
CREATE ASSEMBLY CLRSerializer FROM 'C:\demos\CSTruter.com\CLRSQL\bin\Release\SourceAssembly.XmlSerializers.dll' 
WITH PERMISSION_SET = UNSAFE
GO
CREATE PROCEDURE Test
AS EXTERNAL NAME [CLRProcedures].[CSTruter.com.StoredProcedures].[Test]
...
Рейтинг: 0 / 0
11.10.2016, 17:10
    #39324727
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Clr-хранимка тащит вагон зависимостей.
VAlexeyAntonariyА как ее использовать в проекте? Скомпилировать и подключить вместо XmlSerializer?
Нет. Если используется конструктор XmlSerializer с 1 параметромНе понял. С каким набором параметров не вызывай, он сам находится в System.Xml.Serialization, и негодная зависимость от нее тащится в любом случае.
...
Рейтинг: 0 / 0
11.10.2016, 17:12
    #39324730
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Clr-хранимка тащит вагон зависимостей.
Все, разобрался, негодная зависимость - system. runtime .serialization, а xml - годная.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Clr-хранимка тащит вагон зависимостей. / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]