Я пытаюсь создать сборку на SQL, но не могу загрузить следующую библиотеку DLL.
System.ServiceModel.Internals
create assembly [system.servicemodel.internals]
from 'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.ServiceModel.Internals.dll'
with permission_set = safe;
go
Я получаю такую ошибку:
Msg 6218, уровень 16, состояние 2, строка 2 CREATE ASSEMBLY для сборки «System.ServiceModel.Internals» не удалось из-за сбоя проверки сборки «System.ServiceModel.Internals». Убедитесь, что сборки, на которые есть ссылка, являются актуальными и надежными (для external_access или небезопасно) для выполнения в базе данных. Сообщения об ошибках CLR Verifier, если таковые будут, будут следовать за этим сообщением [: System.Runtime.IOThreadScheduler + ScheduledOverlapped ::. Ctor] [mdToken = 0x6000185] [смещение 0x00000023] [обнаружен неуправляемый указатель] [ожидаемый неуправляемый указатель] Неожиданный тип в стеке. [: System.Runtime.IOThreadScheduler + ScheduledOverlapped :: Post] [mdToken = 0x6000183] [смещение 0x0000000D] [обнаружен неуправляемый указатель] [ожидаемый неуправляемый указатель] Неожиданный тип в стеке. [: System.Runtime.IOThreadScheduler + ScheduledOverlapped :: Cleanup] [mdToken = 0x6000184] [смещение 0x00000019] [обнаружен неуправляемый указатель] [ожидаемый неуправляемый указатель] Неожиданный тип в стеке. [: System.Runtime.Diagnostics.DiagnosticsEventProvider :: WriteMessageEvent] [mdToken = 0x6000357] [смещение 0x0000004B] [найдено ref 'System.String'] Ожидаемый числовой тип в стеке. [: System.Runtime.Diagnostics.DiagnosticsEventProvider :: WriteEvent] [mdToken = 0x6000359] [смещение 0x0000012B] Невозможно проверить инструкцию. [: System.Runtime.Diagnostics.DiagnosticsEventProvider :: WriteEvent] [mdToken = 0x6000359] [смещение 0x0000003F] Невозможно проверить инструкцию. [: System.Runtime.Diagnostics.DiagnosticsEventProvider :: WriteEvent] [mdToken = 0x600035a] [смещение 0x00000061] [найдено ref 'System.String'] Ожидаемый числовой тип в стеке. [: System.Runtime.Diagnostics.DiagnosticsEventProvider :: WriteEvent] [mdToken = 0x600035b] [смещение 0x0000001F] [обнаружен неуправляемый указатель] [ожидаемый неуправляемый указатель] Неожиданный тип в стеке. [: System.Runtime.Diagnostics.DiagnosticsEventProvider :: WriteTransferEvent] [mdToken = 0x600035c] [смещение 0x0000007C] Невозможно проверить инструкцию. [: System.Runtime.Diagnostics.DiagnosticsEventProvider :: WriteTransferEvent] [mdToken = 0x600035c] [смещение 0x000002F4] [найдено Native Int] [ожидаемый неуправляемый указатель] Неожиданный тип в стеке. [...
Я видел этот решенный вопрос (почти на 100% похожий) Не удалось СОЗДАТЬ СБОРКУ в SQL, поэтому я попытался сделать то же самое
Версия SQL Server для .NET и файл совпадают v4.0.30319
Я выполнил инструкцию select * from sys.dm_clr_properties
, и результат кажется нормальным.
directory C:\Windows\Microsoft.NET\Framework64\v4.0.30319\
version v4.0.30319
state CLR is initialized
ВЕРСИЯ SQL: 11.2.5058.0
Есть идеи, как создать эту сборку?
Мне это нужно, потому что когда я пытаюсь создать кастомную сборку, я получаю такую ошибку:
Assembly 'DataLoader' references assembly 'system.servicemodel.internals, version=4.0.0.0, culture=neutral, publickeytoken=31bf3856ad364e35.', which is not present in the current database. SQL Server attempted to locate and automatically load the referenced assembly from the same location where referring assembly came from, but that operation has failed (reason: 2(The system cannot find the file specified.)). Please load the referenced assembly into the current database and retry your request.
PERMISSION_SET
изUNSAFE
вместоSAFE
. Конечно, я запускаю SQL Server 2012, скопировал ваш код CREATE ASSEMBLY из приведенного выше, запустил его, получил ошибку, изменилSAFE
наUNSAFE
, запустил снова, и все заработало. - person Solomon Rutzky   schedule 03.05.2015