Сборка CLR сообщает, что не может найти сборку, на которую есть ссылка, которая уже существует в базе данных

#sql-server #clr #sqlclr

#sql-server #clr #sqlclr

Вопрос:

У меня есть проект CLR, который ссылается на внешнюю сборку. Сначала я создал сборку, на которую есть ссылка, следующим образом:

 CREATE ASSEMBLY [GraphClient]
FROM 'C:UsersrknightDesktopGraphServerClientProjectGraphServerClientGraphClientGraphClientbinDebugGraphClient.dll'
WITH PERMISSION_SET = UNSAFE
  

Затем в моем проекте CLR я смог ссылаться на нее просто отлично на вкладке «SQL Server». Создал проект CLR, и он компилируется без ошибок. Но когда я создаю новую сборку, я получаю сообщение об ошибке:

 CREATE ASSEMBLY [GraphCLR]
FROM 'C:UsersrknightDesktopGraphServerClientProjectGraphServerClientGraphClientGraphCLRbinDebugGraphCLR.dll'
WITH PERMISSION_SET = UNSAFE


Msg 10301, Level 16, State 1, Line 1
Assembly 'GraphCLR' references assembly 'graphclient, version=0.0.0.0, culture=neutral, publickeytoken=null.', 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.
  

Ответ №1:

У меня была эта проблема, и я в конечном итоге решил ее. Я ссылался на сборку x86 на 64-разрядном сервере. Я перестроил сборку, на которую дана ссылка, как любой процессор, установленный на сервере, повторно добавил ссылку на проект, перестроил свой проект как любой процессор, и затем SQL Server смог разрешить ссылку и установить сборку.

Сообщение типа «Вы ссылаетесь на сборку, созданную не для той платформы» было бы весьма полезным 🙂

Ответ №2:

Это должно сработать. Вы уверены, что GraphClient успешно загружен до попытки развертывания GraphCLR? Вместо того, чтобы полагаться на проект базы данных для правильного развертывания, я бы сначала вручную загрузил библиотеки DLL в правильном порядке, затем, если это сработает, вернулся и повозился с проектом, чтобы убедиться, что зависимости верны и развертывание упорядочено правильно.

Если это не помогает, пробовали ли вы включить параметр trustworthy, чтобы устранить любые неясные проблемы с разрешениями?