AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.10.2012, 22:00   #1  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Использование 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  
b_nosoff is offline
b_nosoff
Читатель
Аватар для b_nosoff
MCP
MCBMSS
 
197 / 143 (5) +++++
Регистрация: 01.12.2004
Адрес: Msk
Записей в блоге: 13
BC в четверке вроде как .NET 2.0. Может dll попробовать тоже во второй версии создать?
__________________
Axapta non erubescit
За это сообщение автора поблагодарили: Raven Melancholic (2).
Старый 16.10.2012, 22:04   #3  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Попробовал. Версия тут не причем.
MS SQL не нравится наличие в моей сборки ссылки на коннектор, а сам коннектор просто не нравится ни в каком виде (видимо, неприязнь разных департаментов в MS ).
Сегодня уже устал, завтра попробую не указывать в сборке ссылку на коннектор, а воспользоваться динамической загрузкой при помощи System.Reflection.Assembly. Понимаю, что это извращение, но уже просто зацепила идея, можно ли использовать коннектор из хранимых процедур, хотя для моей задачи есть и другие решения.
Старый 17.10.2012, 05:15   #4  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Я не особо в этом разбираюсь, но может в вашем проекте StoredProcITF указать для BC.NET reference
CopyLocally = Yes?
Старый 17.10.2012, 09:54   #5  
Daiver is offline
Daiver
Участник
Самостоятельные клиенты AX
 
177 / 44 (2) +++
Регистрация: 19.07.2005
Адрес: Москва
Создав проект 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  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Daiver Посмотреть сообщение
ругается "Сборка Microsoft.Dynamics.BusinessConnectorNet не правильно сформирована или не является только сборкой .NET. Непроверяемый заголовок PE/собственная заглушка"
Совершенно верно: .NET BC не является "только сборкой .NET", в нем присутствует неуправляемый (unmanaged) code, см. также Регистрация .NET Business Connector на MS SQL Server
Цитата:
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  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Сергей, проект 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  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Попробовал использовать рефлексию, но чудес, действительно, не бывает. Все работает в тестовом консольном приложении, но в MS SQL выдает ошибку исполнения "Главный узел запретил использование сборки ...".
Фокус не удался, для обмена с порталом будем использовать тот подход, что использовали ранее, да и Daiver тоже нашел решение для своей задачи.
Тема, думаю, закрыта. С момента поста Еременко ничего не изменилось.
Старый 01.05.2013, 22:56   #9  
abri is offline
abri
Участник
Аватар для abri
 
12 / 11 (1) +
Регистрация: 04.03.2011
Доброго времени!
Возьму на себя смелость оживить тему. (Очень уж заманчивой кажется мысль использовать в 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  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Если приложение, использующее CLR для запуска управляемого кода, запретило загружать в домен приложений сборки "смешанного" типа (где кроме управляемого присутствует также неуправляемый код), то это ограничение действует на все загружаемые в этот домен приложений сборки, а не только на те, которые само это приложение загружает в него явно. В данном случае сборка-обертка точно так же не сможет загрузиться, потому что ей для работы нужна другая сборка (BC.NET), загрузка которой запрещена.
Старый 05.05.2013, 20:04   #11  
abri is offline
abri
Участник
Аватар для abri
 
12 / 11 (1) +
Регистрация: 04.03.2011
К моему великому сожалению, вы правы, gl00mie.
Получается, что нет возможности из SQL получить доступ к AX. А так хотелось!
Старый 06.05.2013, 09:20   #12  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
получаю ошибку:

Check if the referenced assemblies are up-to-date and trusted


Я не пробовал, но слово trust вызывает некоторые ассоциации
Теги
business connector, sql server

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: New Content for Microsoft Dynamics AX 2012 : October 2011 Blog bot DAX Blogs 0 27.10.2011 17:11
dynamics-ax: Interview with Microsoft's Lachlan Cash on his new role, AX 2012 and more Blog bot DAX Blogs 6 22.04.2011 14:55
axinthefield: Dynamics AX Event IDs Blog bot DAX Blogs 0 01.03.2011 22:11
gatesasbait: Dynamics AX 2009 SSRS and SSAS Integration Tips Blog bot DAX Blogs 3 09.07.2009 13:07
Developer for Microsoft Dynamics AX Certification Roadmap Blog bot DAX Blogs 1 13.05.2009 16:17
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 11:16.