Я создал хранимую процедуру .NET SQLCLR, собрал и опубликовал ее на своем локальном сервере SQL.
В коде .NET я использую эту строку подключения:
OleDbConnection connection = new OleDbConnection(
"provider=MSOLAP.7;data source=(local);initial catalog=AdventureWorksDW2014");
Этот код .NET содержит запрос на обновление куба. Таким образом, сборка должна обновить куб, размещенный на моем локальном сервере Analysis.
При выполнении хранимой процедуры SQLCLR в SSMS я получаю следующую ошибку:
Сообщение 6522, Уровень 16, Состояние 1, Процедура dbo.SqlStoredProcedure1, Строка 0
[Batch Start Line 0] Ошибка .NET Framework во время выполнения
пользовательской подпрограммы или агрегата "SqlStoredProcedure1":
System.Security.SecurityException: Запрос на разрешение типа
'System.Data.OleDb.OleDbPermission, System.Data, версия = 4.0.0.0,
Культура = нейтральная, PublicKeyToken = b77a5c561934e089 'не удалось.
System.Security.SecurityException: в
System.Security.CodeAccessSecurityEngine.Check (Требование объекта,
StackCrawlMark & stackMark, Boolean isPermSet) в
System.Security.PermissionSet.Demand () в
System.Data.Common.DbConnectionOptions.DemandPermission () в
System.Data.OleDb.OleDbConnectionFactory.PermissionDemand (DbConnection
externalConnection) в
System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal (DbConnection
externalConnection, DbConnectionFactory connectionFactory,
TaskCompletionSource`1 повтор, DbConnectionOptions userOptions) в
System.Data.ProviderBase.DbConnectionInternal.OpenConnection (DbConnection
externalConnection, DbConnectionFactory connectionFactory) в
System.Data.OleDb.OleDbConnection.Open () в
StoredProcedures.SqlStoredProcedure1 ()
По какой-то причине соединение OleDb не работает из сборки. Но при отладке из Visual Studio код работает отлично и обновляет куб.
Пожалуйста, поделитесь со мной потенциальными исправлениями вышеуказанной ошибки.