У меня есть небольшое приложение, которое использует SQL Server 2005 Express с хранимыми процедурами CLR. Он был успешно установлен и работает на многих компьютерах под управлением XP и Vista.
Для создания сборки выполняется следующий SQL (имена изменены для защиты невинных):
CREATE ASSEMBLY myAssemblyName FROM 'C:\PathToAssembly\myAssembly.dll
На одном компьютере (тестовом компьютере, который отображает другие компьютеры, предназначенные для установки) под управлением Vista и с некоторыми очень агрессивными ограничениями политики безопасности, я получаю следующую ошибку:
Сообщение 6218, уровень 16, состояние 2, домен сервера \ имя_сервера, строка 2
СОЗДАТЬ СБОРКУ для сборки «myAssembly» не удалось, поскольку сборка «myAssembly» не прошла проверку. Проверьте, являются ли указанные сборки современными и надежными (для external_access или unsafe) для выполнения в базе данных. Сообщения об ошибках CLR Verifier, если они появятся после этого сообщения
[: myProcSupport.Axis :: Proc1] [mdToken = 0x6000004] [HRESULT 0x8007000E] - Недостаточно памяти для выполнения этой операции.
[: myProcSupport.Axis :: Proc2] [mdToken = 0x6000005] [HRESULT 0x8007000E] - Недостаточно памяти для выполнения этой операции.
[: myProcSupport.Axis :: Proc3] [mdToken = 0x6000006] [HRESULT 0x8007000E] - Недостаточно памяти для выполнения этой операции.
[: myProcSupport.Axis ::. Ctor] [mdToken = 0x600000a] [HRESULT 0x8007000E] - Недостаточно памяти для выполнения этой операции.
[: myProcSupport.Axis :: Proc4] [mdToken = 0x6000001] [HRESULT 0x8007000E] - Недостаточно памяти для выполнения этой операции.
[: myProcSupport.Axis :: Proc5] [mdToken = 0x6000002] [HRESULT 0x8007000E] - Недостаточно памяти для выполнения этой операции.
[: myProcSupport.Axis :: Proc6] [mdToken = 0x6000007] [HRESULT 0x8007000E] - Недостаточно памяти для выполнения этой операции.
[: myProcSupport.Axis :: Proc7] [mdToken = 0x6000008] [HRESULT 0x8007000E] - Недостаточно памяти для выполнения этой операции.
[: myProcSupport.Axis :: Proc8] [mdToken = 0x6000009] [HRESULT 0x8007000E] - Недостаточно памяти для выполнения этой операции.
[: myProcSupport.Axis :: Proc8] [mdToken = 0x600000b] [HRESULT 0x8007000E] - Недостаточно памяти для выполнения этой операции.
[: myProcSupport.Axis :: Proc9] [mdToken = 0x600000c] [HRESULT 0x8007000E] - Недостаточно памяти для выполнения этой операции ....
C # DLL определяется как SAFE
, поскольку она использует только данные, содержащиеся в базе данных. DLL обычно не подписана, но я предоставил подписанную версию для тестирования и получил те же результаты.
Установка выполняется кем-то другим, и у меня нет доступа к коробке, но они выполняют предоставленные мной сценарии и работают на других компьютерах.
Я пытался найти информацию об этой ошибке за пределами того, что дают результаты сценария, но я не нашел ничего полезного.
Человек, выполняющий сценарий для создания сборки, вошел в систему с учетной записью администратора, запустил CMD от имени администратора, подключился к БД через проверку подлинности Windows, был добавлен в роль dbo_owner и добавлен в роль сервера SysAdmin. с надеждой, что это проблема с разрешениями. Это ничего не изменило.
Нужно ли настраивать SQL Server 2005 Express по-другому для этой среды?
Записана ли эта ошибка где-либо, кроме выходных данных SQLCMD? Что может вызвать эту ошибку? Могут ли политики безопасности Vista вызвать это?
У меня нет доступа к компьютеру (клиент проводит тестирование), поэтому я сам не могу осмотреть коробку.
* * ТИА тысяча сорок-девять