20.02.2012, 14:32 | #1 |
Участник
|
CRM 2011 и прямой доступ к SQL из плагина
CRM 2011
Необходимо сделать прямой запрос к SQL из кода плагина. Как правильно это сделать, т.е. откуда достать строку подключения и как все организовать, чтобы соблюдались права пользователей? |
|
20.02.2012, 15:30 | #2 |
Moderator
|
Строку подключения можно взять из реестра: LM\Software\Microsoft\MSCRM. Насчет авторизации под пользователем - дело мутное. Возможно вам поможет это: http://www.thuta.info/2010/06/filter...rsonation.html. Дело в том, что плагин выполняется под учетной записью пула веб приложения, которое из соображений безопасности вообще може не иметь доступа к базе. Так что, возможно, придется еще поработать с настройками.
Так же рекомендую еще этот пост от того же автора. Так же способствует пониманию авторизации-имперсонации в CRM: http://www.thuta.info/2010/08/ifd-wi...nator-and.html
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional Последний раз редактировалось Артем Enot Грунин; 20.02.2012 в 15:33. |
|
20.02.2012, 17:03 | #3 |
Чайный пьяница
|
По поводу корректной имперсонации в t-sql есть такая замечательная команда как Execute As.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
02.03.2012, 01:37 | #4 |
Moderator
|
Не за что!
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
03.03.2012, 21:47 | #5 |
Участник
|
1. К SQL Вы подключаетесь от имени пользователя. Это имя Сервера CRM.
Вам необходимо добавить его для доступа к БД. Я обычно даю права DBOwner. 2. Если Вы хотите получать данные через хранимые процеды (что более правильно), то Вам необходимо создать еще одну БД и прописать в неё синонимы на БД MSCRM. 3. Для того чтобы у Вас работали Filteredview для пользователя, от которого Вы вызываете запрос, то в контексте запроса (SqlConnection) необходимо прописать пользователя. Для этого перед выполнением запроса вызовите скрипт. declare @contextuserid varbinary(128) select @contextuserid = cast(@userid as varbinary(128)) set context_info @contextuserid @userid это ID пользователя, от которого вызывается плагин. Вроде все. Это точно работает. Но Видимо уже совсем не актуальный вопрос. Незачто |
|
|
За это сообщение автора поблагодарили: ZooY (1). |
13.03.2012, 13:00 | #6 |
Участник
|
Обычному пользователю DBOwner?
|
|
14.03.2012, 10:33 | #7 |
Участник
|
Не совсем понял. Что значит обычному пользователю?
|
|
14.03.2012, 19:32 | #8 |
Участник
|
Извините, я сначала подумал, что вы даете dbowner-a тем, что в UserGroup.
|
|
Теги |
plugin, sql server, crm2011 |
|
|