15.10.2012, 22:00 | #1 |
Участник
|
Использование Microsoft.Dynamics.BusinessConnectorNet в хранимых процедурах CLR
Всем хорошего настроения.
Попробовал использовать Net Connector в пользовательской функции MS SQL. Написал небольшой проект (если важно, то на C#), но при попутке регистрации сборки: Код: CREATE ASSEMBLY [StoredProcITF] from 'C:\Data\StoredProcAx\MakePrice\bin\Debug\StoredProcITF.dll' with permission_set = UNSAFE GO Цитата:
Assembly 'StoredProcITF' references assembly 'microsoft.dynamics.businessconnectornet, version=4.0.0.0, culture=neutral, publickeytoken=31bf3856ad364e35.', 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.
Код: CREATE ASSEMBLY [Microsoft.Dynamics.BusinessConnectorNet] from 'C:\Program Files\Microsoft Dynamics AX\40\Client\Bin\Microsoft.Dynamics.BusinessConnectorNet.dll' with permission_set = UNSAFE GO Цитата:
CREATE ASSEMBLY for assembly 'Microsoft.Dynamics.BusinessConnectorNet' failed because assembly 'Microsoft.Dynamics.BusinessConnectorNet' failed verification. Check if the referenced assemblies are up-to-date and trusted (for external_access or unsafe) to execute in the database. CLR Verifier error messages if any will follow this message
sp_configure 'clr enabled', 1; выполнял, доверие к базе включал при помощи ALTER DATABASE [ИмяБазы] SET Trustworthy ON. Права пользователю при помощи GRANT UNSAFE ASSEMBLY TO [Пользователь] давал. DAX4, MS SQL 2005. Мой проект откомпилирован на VS 2008 с NET3.5. Если выкидываю ссылки на коннектор и просто эмулирую его вызов, то моя сборка регистрируется, функцию создать и вызвать дает. Не получается зарегистрировать в MS SQL сборку коннектора. |
|
16.10.2012, 13:54 | #2 |
Читатель
|
BC в четверке вроде как .NET 2.0. Может dll попробовать тоже во второй версии создать?
|
|
|
За это сообщение автора поблагодарили: Raven Melancholic (2). |
16.10.2012, 22:04 | #3 |
Участник
|
Попробовал. Версия тут не причем.
MS SQL не нравится наличие в моей сборки ссылки на коннектор, а сам коннектор просто не нравится ни в каком виде (видимо, неприязнь разных департаментов в MS ). Сегодня уже устал, завтра попробую не указывать в сборке ссылку на коннектор, а воспользоваться динамической загрузкой при помощи System.Reflection.Assembly. Понимаю, что это извращение, но уже просто зацепила идея, можно ли использовать коннектор из хранимых процедур, хотя для моей задачи есть и другие решения. |
|
17.10.2012, 05:15 | #4 |
Участник
|
Я не особо в этом разбираюсь, но может в вашем проекте StoredProcITF указать для BC.NET reference
CopyLocally = Yes? |
|
17.10.2012, 09:54 | #5 |
Участник
|
Создав проект SQL Server project, VS не дает добавить в Reference ссылку на Microsoft.Dynamics.BusinessConnectorNet.dll И использовать в коде компоненты BC не получится, например в хранимой процедуре.
Получается можно использовать ограниченный набор сборок для проектов SQL Server project? Когда же добавляю сборку Microsoft.Dynamics.BusinessConnectorNet.dll в MS SQL Server, ругается "Сборка Microsoft.Dynamics.BusinessConnectorNet не правильно сформирована или не является только сборкой .NET. Непроверяемый заголовок PE/собственная заглушка" Если создать проект Класса, добавить туда все необходимые сборки, попытаться такую сборку добавить в базу, то ругается : "Сборка Microsoft.Dynamics.BusinessConnectorNet не найдена в каталоге SQL" CopyLocally = Yes не спасает. BC.NET от DAX 2009 SP1 RU6. MS SQL 2005 SP3 |
|
17.10.2012, 10:01 | #6 |
Участник
|
Цитата:
Цитата:
Microsoft SQL Server 2005 не поддерживает смешанный тип (mixed mode) для сборок (assemblies) .NET. Смешанный тип означает одновременное содержание управляемого (managed) и неуправляемого (unmanaged) кода.
.NET Business Connector является сборкой смешанного типа (он объединяет управляемые классы и неуправляемое ядро DAX). |
|
|
За это сообщение автора поблагодарили: Raven Melancholic (5), Daiver (1). |
17.10.2012, 10:54 | #7 |
Участник
|
Сергей, проект SQL Server project нужен, по большому счету, для автоматического развертывания из среды VS. На самом деле, работает и простой Class Library, если разворачивать сборку вручную.
Проблема, как её описал gl00mie в NET Connector. А так, подключали очень разные сборки даже наши коллеги из родственной системы: http://axforum.info/forums/blog.php?b=345 Но, видимо, для MS Dynamics CRM данный момент продуман лучше, чем у нас. |
|
17.10.2012, 22:39 | #8 |
Участник
|
Попробовал использовать рефлексию, но чудес, действительно, не бывает. Все работает в тестовом консольном приложении, но в MS SQL выдает ошибку исполнения "Главный узел запретил использование сборки ...".
Фокус не удался, для обмена с порталом будем использовать тот подход, что использовали ранее, да и Daiver тоже нашел решение для своей задачи. Тема, думаю, закрыта. С момента поста Еременко ничего не изменилось. |
|
01.05.2013, 22:56 | #9 |
Участник
|
Доброго времени!
Возьму на себя смелость оживить тему. (Очень уж заманчивой кажется мысль использовать в MS SQL возможности AX). Кто-нибудь пробовал действовать следующим образом: 1. Регистрируем в ГАК SQL-сервера Microsoft.Dynamics.BusinessConnectorNet.dll 2. Делаем .NET-"обёртку" (библиотечку C#, вызывающую необходимые функции из BusinessConnectorNet) для Microsoft.Dynamics.BusinessConnectorNet.dll и подключаем ее к SQL. Идея заключается в попытке обмануть SQL. "Обёртка" будет чисто .NET сборкой и должна подключится к SQL без проблем. в свою очередь она будет вызывать необходимые нам функции BusinessConnector. |
|
04.05.2013, 13:40 | #10 |
Участник
|
Если приложение, использующее CLR для запуска управляемого кода, запретило загружать в домен приложений сборки "смешанного" типа (где кроме управляемого присутствует также неуправляемый код), то это ограничение действует на все загружаемые в этот домен приложений сборки, а не только на те, которые само это приложение загружает в него явно. В данном случае сборка-обертка точно так же не сможет загрузиться, потому что ей для работы нужна другая сборка (BC.NET), загрузка которой запрещена.
|
|
05.05.2013, 20:04 | #11 |
Участник
|
К моему великому сожалению, вы правы, gl00mie.
Получается, что нет возможности из SQL получить доступ к AX. А так хотелось! |
|
06.05.2013, 09:20 | #12 |
Участник
|
|
|
Теги |
business connector, sql server |
|
|