Проблема с использованием драйвера OLEDB в процедуре SQL Server CLR

мы пытаемся создать хранимую процедуру C# CLR на машине SQL Server 2005. Код C# подключается к внешнему источнику данных через драйвер OLEDB для получения таблицы данных. Он был протестирован в отдельном консольном приложении и работает без проблем. (Драйвер OLEDEB — это проприетарный драйвер, подключающийся к проприетарной БД...)

На SQL Server мы установили для сборки уровень разрешений EXTERNAL, это StrongNamed, и для него в SQL Server был создан ASSYMETRIC KEY.

Когда мы пытаемся выполнить процедуру, мы получаем следующие две проблемы:

  • Учетные данные, используемые для связи с OLEDB, - это те, под которыми работает служба SQL, а не учетные данные зарегистрированного пользователя в контексте sql.

  • поднимается .NET Framework:

    System.Security.SecurityException: Запрос разрешения типа System.Data.OleDb.OleDbPermission

Похоже, у нас не получается дать процессу необходимые права, чтобы он запускал драйвер oledb. Либо так, либо нашей конфигурации не хватает, либо мы просто что-то делаем не так. Установка уровня разрешений на UNSAFE также невозможна...

Есть ли у кого-нибудь опыт решения подобных проблем. Любой вклад будет приветствоваться!


person scoob    schedule 28.01.2009    source источник


Ответы (1)


Что касается вашей первой проблемы (выдача себя за другое лицо):

http://blogs.msdn.com/sqlprogrammability/archive/2006/06/16/635004.aspx

http://www.codeproject.com/KB/database/SQLCLRIntegrationSecurity.aspx

person Cade Roux    schedule 28.01.2009