Не удалось загрузить файл или сборку Microsoft.SqlServer.SqlClrProvider на веб-сайте ASP.net, где он?

На моем сайте ASP.net у меня есть ссылка на Microsoft.SQLserver.SMO. Я скопировал эту ссылку на мой производственный сервер и получил ошибку загрузки для Microsoft.SqlServer.Management.Sdk.Sfc. Эта ошибка была устранена путем копирования dll из

C:\Program files\Microsoft Sql Server\110\SDK\Assembilies

Однако затем я получил ту же ошибку, но для Microsoft.SqlServer.SqlClrProvider, которую не найти.

Где я могу найти dll SqlClrProvider? Он работает на моем локальном хосте, поэтому он должен быть где-то.

Ответы

Ответ 1

На вашей машине разработки или машине, на которой установлен SQL Server, файл Microsoft.SqlServer.SqlClrProvider.dll находится в вашем GAC. Однако вы не можете скопировать этот файл без внесения изменений в реестр.

С помощью редактора реестра перейдите к HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Fusion. Добавьте новый DWORD, называемый DisableCacheViewer. Дайте ему значение 1.

Как только это изменение будет сделано, вы можете перейти к C:\Windows\assembly\GAC_MSIL\Microsoft.SqlServer.SqlClrProvider\, чтобы получить необходимую вам dll.

Чтобы увидеть более подробное объяснение, следуйте одной из этих ссылок:

Ответ 2

Я хотел создать встроенный script в powershell и наткнуться на вашу же проблему.

Дело в том, что Microsoft.SqlServer.SqlClrProvider.dll не установлен в файлах SQL, а в windows assembly.

assembly специальная папка: вы ничего не можете копировать с помощью пользовательского интерфейса Windows.

Мне просто нужен Microsoft.SqlServer.SqlClrProvider.dll, чтобы я мог загрузить его в свой script следующим образом:

[System.Reflection.Assembly]::LoadFile($scriptPath+"dll\Microsoft.SqlServer.SqlClrProvider.dll") | out-null

чтобы скопировать его, вы можете сделать следующее:

c:\>cd c:\Windows\assembly
c:\Windows\assembly>dir /s Microsoft.SqlServer.SqlClrProvider.dll
# here you get the directory and the file
c:\Windows\assembly>copy c:\Windows\assembly\GAC_MSIL\Microsoft.SqlServer.SqlClrProvider\<version>\Microsoft.SqlServer.SqlClrProvider.dll c:\Users\Administrator\Desktop\

вы хотите сделать это на компьютере с установленным SQLserver, иначе вы его не найдете.

Это просто обходной путь. Думаю, это не лучшее, что нужно сделать, если вам нужно выполнить свой script в разных средах.

HTH

Ответ 3

Копирование SqlClrProvider dll в каталог sqlserver Binn не помогло в моем случае.

Причина:

Это было связано с использованием разных версий SQLServer на производственной машине и целевой машине.

Решение:

Убедитесь, что вы используете ту же версию библиотек SMO, что и на целевых компьютерах. Если на целевом компьютере есть SQLServer2008, вы должны использовать библиотеки v10, иначе вы получите эту ошибку.

MoreDetails:

SqlServer на моих целевых машинах был версией 2008 (10), и у меня был SqlServer2014 (12) на моей собственной машине. Когда я использовал библиотеку SMO, visualStudio добавила библиотеки v12 (Microsoft.SqlServer.SMO,...), но smo - это просто оболочка, которая использует SqlClrProvider и ожидает, что SqlClrProvider такой же версии будет в системных сборках. это заставило приложение сбой на целевой машине, так как v12 SqlClrProvider не существовал. Используя библиотеки v10 smo, я решил проблему

Ответ 4

Я не мог решить свою проблему, используя ссылку Microsoft.Sqlerver.SMO. Поэтому я вместо этого использовал класс System.Data.Sql.SqlDataSourceEnumerator для всех моих потребностей в функциональности Sql.

Ответ 5

Для людей, отправляющих эту ошибку, и прибывающих сюда, есть еще одна возможность. Перейдите в Службы и убедитесь, что ваш SQL Server процесс может работать. На моей машине был изменен пароль для учетной записи пользователя. Как только я исправил пароль, процесс начался, и я больше не получил вышеуказанную ошибку.

Ответ 6

Первое, что вам нужно сделать, - отключить расширение оболочки GAC, которое позволяет вам просматривать GAC, чтобы сделать это:

  • Открыть "regedit"
  • Перейдите к HKEY_LOCAL_MACHINE/ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ /Microsoft/Fusion
  • Добавить новый DWORD или 32 бит DWORD с именем DisableCacheViewer с шестнадцатеричным значением 0x1 или десятичное значение 1

Это отключает оболочку GAC, позволяющую вам полностью просматривать папку сборок, теперь мы можем извлечь сборку из GAC и перебросить ее в папку bin или местоположение dll на клиентской машине.

  • Перейдите к C:\Windows\assembly\GAC_MSIL\Microsoft.SqlServer.SqlClrProvider\
  • Здесь вы можете увидеть больше, чем папку, это для каждой версии SQL-сервера, который вы установили.
  • Для SQL 2012 это будет:\11.0.0.0__89845dcd8080cc91
  • Затем вы найдете файл Microsoft.SqlServer.SqlClrProvider.dll

Ссылка

Ответ 7

Имела ту же проблему, но для версии 11. Чтобы установить правильные сборки, выполните следующие действия:

enter image description here