Подтвердить что ты не робот

Не удалось загрузить файл или сборку. Microsoft.sqlserver.sqlclrprovider 13.100.0.0

Я запускаю приложение Winforms, используя сборки SQLServer Microsoft.SqlServer.ConnectionInfo(13.100.0.0) Microsoft.SqlServer.SMO(13.100.0.0)

На том же компьютере установлена ​​SSMS 2016 (Aug). И здесь также установлен SQL 2014 Dev Edition.

Когда я запускаю свое приложение, он дает мне ошибку:

сonnection = new ServerConnection(instanceName);
------------
Could not load file or assembly ‘microsoft.sqlserver.sqlclrprovider version=13.100.0.0′

Я проверил: GAC содержит некоторые из этих сборок 11, 12, 13.0.0.0, но нет 13.100.0.0.

Приложение имеет ссылки на сборку: C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Tasks

Microsoft.SqlServer.ConnectionInfo (13.100.0.0)
Microsoft.SqlServer.SMO(13.100.0.0)

Моя ОС - Windows 7, и я думаю, что все 13.100.0.0 были установлены установщиком SSMS. Как решить эту проблему? Где я могу найти сборку microsoft.sqlserver.sqlclrprovider 13.100.0.0?

4b9b3361

Ответ 1

Я была такая же проблема. При обновленной SSMS основная SMO теперь установлена в "C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Tasks" с версией 13.100.0.0 в VS (файл Microsoft.SqlServer.Smo.dll имеет версию 13.0.15700.28), но Microsoft.SqlServer.SqlClrProvider отсутствует. DLL упоминается в GAC. Когда я беру тот, который поставляется с SSMS, я получаю исключение в своем коде.

Проблема заключается в том, что установщик SSMS добавляет ссылку на эту частную SMO в список ссылок Visual Studio. Чарльз Ганьон дал мне обходной путь (использование HintPath), который я реализовал в моих файлах .csproj.

Ответ 2

Клиентские приложения не должны использовать сборки из папок Program Files, если они не из определенных папок SDK (например, "C:\Program Files (x86)\Microsoft SQL Server\130\SDK")

Версия сборок 13.100. *, Которую вы видите, в настоящее время предназначена только для использования инструментами Microsoft и поэтому не размещается со всеми необходимыми зависимостями в одном месте. Папка DTS особенно содержит только подмножество сборок SMO, так как этот код не нуждается в таких вещах, как SqlClrProvider.

Пожалуйста, используйте сборки из папок SDK или из SharedManagementObjects.msi, чтобы использовать их в качестве ссылок для своих приложений.

-Charles Ганьон ([email protected])

Ответ 3

Если у кого-то есть неудовольствие от участия в этом сценарии, надеюсь, это поможет. Ни один из предложенных ответов на этот пост (ни те, которые связаны с сайтом MS Connect, ни какие-либо другие решения для других версий SQL, ни исправления для других не связанных файлов DLL, ни...) исправили мою проблему. Добавление ссылки на DLL из GAC привело к другой ошибке Access Denied.

Благодаря значительному устранению неполадок в папках debug/bin моего приложения и сравнении версий DLL файлов SMO и SqlClrProvider, я заметил две вещи. A) Подробное описание сообщения об ошибке/стеке показало ссылку на отдельную dll, которая, по-видимому, является зависимостью для SMO, а DLL - Microsoft.SqlServer.ConnectionInfo.dll. B) Я заметил, что когда проект был скомпилирован, дата/версия ConnectionInfo.dll показала, что он не заменяется, когда библиотеки DLL, с которыми ссылаются ссылки SMO ​​и Common DLL. Поскольку это оказалось зависимым, это не имело смысла.

В результате я добавил ссылки на три dll. Microsoft.SqlServer.Smo.dll, Microsoft.SqlServer.SqlClrProvider.dll и Microsoft.SqlServer.ConnectionInfo.dll. Обратите внимание, что я вытащил эти ссылки из C:\Program Files (x86)\Microsoft SQL Server\140\Tools\Binn\ManagementStudio. Это не рекомендуемое местоположение от MS (см. Выше ответы), но, честно говоря, в этот момент мне все равно. Это сработало.

Bottom Line: попробуйте добавить файл connectioninfo.dll в свои ссылки.

Не уверен 100%, если требуется Копировать Локальный = Истина, но это свойство установлено для всех 3.

Visual Studio 2013 и SQL Server 2014, если это необходимо.

edit: Ran в еще одну проблему, связанную с этим беспорядком. Нам также необходимо было включить SqlServer.Management.sdk.sfc.dll и SqlServer.SqlEnum.dll тоже, поскольку они относятся к Enums, используемым некоторыми из этих вызовов. Это приводит к полному количеству ссылок на 5, чтобы исправить эту ошибку. Надеюсь, это поможет кому-то!

Ответ 4

Microsoft.SqlSever.SqlClrProvider можно установить, запустив следующие MSI:

Гумилева\x64\SQLSysClrTypes.msi

Гумилева\x64\SharedManagementObjects.msi

которые доступны в виде следующей ссылки для загрузки Microsoft: https://www.microsoft.com/en-us/download/details.aspx?id=52676

Ссылка содержит список MSI. Вам нужно будет перемещаться по списку, чтобы найти элементы выше.

Сначала установите SQLSysClrTypes.msi, а затем SharedManagmentObjects.msi.

Фактически Microsoft.SqlSever.SqlClrProvider.dll будет установлен в ваш GAC. Остальные связанные сборки будут установлены в C:\Program Files\Microsoft SQL Server\130\

Ответ 5

Оказывается, в моем случае речь шла только о добавлении всех DLL с тем же номером версии, что и ссылки. Это нужно было сделать вручную. Все они были найдены в C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Tasks\(для Microsoft.SqlServer.Smo.dll) или C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn\ManagementStudio\в случае Microsoft.SqlServer.SqlClrProvider.dll. Если вы посмотрите на свойства всех связанных/требуемых DLL в этих двух папках, все они говорят, что версия 13.0.15700. Но как только вы перейдете к каждому из них и включите его в качестве ссылки, ссылочные свойства в VS2015 все скажут версию 13.100.0.0??????? Как насчет этого! И все это работает.

Ответ 6

У меня была похожая проблема, мое исключение в Visual Studio запрашивало: Microsoft.SqlServer.Diagnostics.STrace, Version = 13.0.0.0

В ссылках проекта у меня была DLL с версией 13.0.1601... и версией (просматриваемой VS) было 13.100.0.0, поэтому я заменил библиотеку DLL в ссылках проекта версией 13.0.4424... и версией (Просмотрено VS) было 13.0.0.0

Все работало как положено.

Где-то здесь возникают некоторые вопросы.

  1. Почему есть две версии на DLL?
  2. Почему dll с версией 13.0.1601 имеет версию 13.100.0.0 (просматривается VS), а другая с более новой версией 13.0.4424 имеет более низкую версию 13.0.0.0 (просматривается VS)?

Четкий ответ:

Клиентские приложения не должны использовать сборки из папок Program Files, если они не из определенных папок SDK (например, "C:\Program Files (x86)\Microsoft SQL Server\130\SDK")

Версия сборок 13.100. *, Которую вы видите, в настоящее время используется только инструментами Microsoft и поэтому не размещена со всеми необходимыми зависимостями, находящимися в одном месте. Папка DTS особенно содержит только подмножество сборок SMO, так как этот код не нуждается в таких вещах, как SqlClrProvider.

Пожалуйста, используйте сборки из папок SDK или из SharedManagementObjects.msi для использования в качестве ссылок для ваших приложений.

-Charles Ганьон ([email protected])

Ответ 7

Я использовал nuget неофициальный пакет, этот.

Это работало хорошо, и не требует установки чего-либо отдельного на рабочем сервере.