Sql CLR ошибка во время выполнения - PullRequest
2 голосов
/ 06 апреля 2011

Выполнение SQL CLR. Все отлично работало в разработке, все отлично в тестировании, потом мы начали работать, и все сломалось. Таким образом, похоже, что-то связано с безопасностью EXTERNAL_ACCESS. Я подтвердил, что наша база данных помечена как заслуживающая доверия, владелец базы данных является системным администратором, а сборка помечена как разрешения EXTERNAL_ACCESS. Это оставляет меня немного озадаченным относительно того, что могло вызвать эту ошибку. Любые другие идеи о том, что может вызвать эту ошибку?

(я спрятал несколько вещей, критически важных для ошибки)

Ошибка при запросе хранилища для грязных элементов: 'prc_XXXXXXXXXXXXXXXXXXXXXXXXXXXX' System.Data.SqlClient.SqlException: в Microsoft .NET Framework произошла ошибка при попытке загрузить идентификатор сборки 65536. Возможно, серверу не хватает ресурсов или сборке нельзя доверять с помощью PERMISSION_SET = EXTERNAL_ACCESS или UNSAFE. Запустите запрос еще раз или просмотрите документацию, чтобы узнать, как решить проблемы доверия к сборке. Для получения дополнительной информации об этой ошибке: System.IO.FileLoadException: не удалось загрузить файл или сборку 'myassemblyName, версия = 1.0.0.0, Culture = нейтральный, PublicKeyToken = 123451234151234' или одну из ее зависимостей. Исключение из HRESULT: 0x80FC3C2C System.IO.FileLoadException: в System.Reflection.Assembly._nLoad (имя_сборки имя_файла, строковое codeBase, доказательство сборкиSecurity, расположение сборкиHint, StackCrawlMark & ​​stackMark, логическое значение throwOnFileNotFound, логическое значение для интроспекции) в System.Reflection.Assembly.InternalLoad (AssemblyName assemblyRef, Evidence AssemblySecurity, StackCrawlMark & ​​stackMark, Boolean forIntrospection) в System.Reflection.Assembly.InternalLoad (строка String AssemblyString, Свидетельство AssemblySecurity, StackCrawlMark & ​​stackMark, логическое значение для интроспекции) в System.Reflection.Assembly.Load (String assemblyString) в System.Data.SqlClient.SqlConnection.OnError (исключение SqlException, логическое breakConnection) в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserStateObject stateObj) в System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) в System.Data.SqlClient.SqlDataReader.ConsumeMetaData () в System.Data.SqlClient.SqlDataReader.get_MetaData () в System.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) в System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, RunBehavior runBehavior, логический returnStream, логический асинхронный) в System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, логический returnStream, метод String, результат DbAsyncResult) в System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, логический returnStream, метод String) в System.Data.SqlClient.SqlCommand.ExecuteReader (поведение CommandBehavior, метод String) в System.Data.SqlClient.SqlCommand.ExecuteDbDataReader (поведение CommandBehavior) в ....

1 Ответ

1 голос
/ 07 апреля 2011

По какой-то причине, хотя пользовательский интерфейс показал, что сборка имела разрешения на внешний доступ (и он добавил к базе данных с этими разрешениями), внутренне он должен был подумать, что по какой-то причине у него такого доступа нет. Поэтому в качестве обходного пути я выполнил эти команды, и это устранило проблему (обратите внимание, я попытался запустить только вторую команду, но она не устранила ее):

ALTER ASSEMBLY [] WITH PERMISSION_SET = UNSAFE

ALTER ASSEMBLY [] WITH PERMISSION_SET = EXTERNAL_ACCESS

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...