Не удалось загрузить файл или сборку 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]()
Ответ 8
Se recomienda utilizar el paquete Nuget.
Ссылка: https://www.nuget.org/packages/Microsoft.SqlServer.SqlManagementObjects