无法加载文件或程序集microsoft.sqlserver.sqlclrprovider 13.100.0.0

问题描述 投票:14回答:7

我使用SQLServer程序集运行我的Winforms应用程序Microsoft.SqlServer.ConnectionInfo(13.100.0.0)Microsoft.SqlServer.SMO(13.100.0.0)

在同一台机器上安装了SSMS 2016(Aug)。这里也安装了SQL 2014开发版。

当我运行我的应用程序时,它给了我一个错误:

с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都是由SSMS安装程序安装的。如何解决这个问题呢?我可以找到程序集microsoft.sqlserver.sqlclrprovider 13.100.0.0吗?

.net sql-server .net-assembly smo
7个回答
5
投票

我遇到过同样的问题。使用更新的SSMS,主SMO现在安装在"C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Tasks"中,VS中的版本为13.100.0.0(Microsoft.SqlServer.Smo.dll文件具有13.0.15700.28版本),但没有引用Microsoft.SqlServer.SqlClrProvider.dll在GAC。当我选择SSMS提供的那个时,我的代码中会有一个例外。

问题是SSMS的安装程序将这些私有SMO的引用添加到Visual Studio的引用列表中;我在Microsoft Connect发布了一个错误。 Charles Gagnon给了我一个解决方法(使用HintPath),我在.csproj文件中实现了。


7
投票

https://connect.microsoft.com/SQLServer/feedback/details/3106613/net-exception-could-not-load-file-or-assembly-microsoft-sqlserver-sqlclrprovider-13-100-0-0-after-installing-sql-server-2016

客户端应用程序不应使用Program Files文件夹中的程序集,除非它们来自特定的SDK文件夹(例如“C:\ Program Files(x86)\ Microsoft SQL Server \ 130 \ SDK”)

您看到的13.100。*版本的程序集目前仅供Microsoft工具使用,因此不会将所有必需的依赖项放在同一位置。 DTS文件夹特别只有SMO程序集的子集,因为该代码不需要诸如SqlClrProvider之类的东西。

请使用SDK文件夹中的程序集或SharedManagementObjects.msi中的程序集作为应用程序的参考。

-Charles Gagnon([email protected]


2
投票

如果有人不喜欢遇到这种情况,希望这会有所帮助。这篇文章中没有建议的答案(也没有链接到MS Connect站点,也没有任何其他SQL版本的解决方案,也没有修复其他无关的DLL文件,也没有...)解决了我的问题。从GAC添加对DLL的引用导致另一个错误Access Denied。

通过对我的应用程序的debug / bin文件夹进行大量的故障排除并比较SMO和SqlClrProvider DLL文件的版本,我注意到了两件事。 A)详细的错误消息/堆栈跟踪显示对单独的dll的引用,这显然是SMO的依赖项,该DLL是Microsoft.SqlServer.ConnectionInfo.dll。 B)我注意到,当项目编译时,ConnectionInfo.dll的日期/版本显示,当修改了SMO和Common DLL引用的DLL时,它没有被替换。由于这似乎是一种依赖,这没有意义。

结果,我在三个dll中添加了References。 Microsoft.SqlServer.Smo.dll,Microsoft.SqlServer.SqlClrProvider.dll和Microsoft.SqlServer.ConnectionInfo.dll。请注意,我从C:\ Program Files(x86)\ Microsoft SQL Server \ 140 \ Tools \ Binn \ ManagementStudio中提取了这些引用。这不是来自MS的推荐位置(见上面的答案),但坦率地说,此时我并不在意。有效。

结论:尝试将connectioninfo.dll文件添加到您的引用。

如果需要Copy Local = True,则不是100%确定,但是为所有3设置了该属性。

Visual Studio 2013和SQL Server 2014(如果相关)。

编辑:进入另一个与此混乱有关的问题。我们还需要包括SqlServer.Management.sdk.sfc.dll和SqlServer.SqlEnum.dll,因为它们与其中一些调用所使用的枚举有关。这使得总引用为5来修复此错误。希望这有助于某人!


1
投票

可以通过运行以下MSI来安装Microsoft.SqlServer.SqlClrProvider:

ENU \ 64 \ SQLSysClrTypes.msi

ENU \ 64 \ SharedManagementObjects.msi

可从以下Microsoft下载链接获得:https://www.microsoft.com/en-us/download/details.aspx?id=52676

该链接提供了MSI列表。您必须浏览列表才能找到上面的项目。

首先安装SQLSysClrTypes.msi,然后安装SharedManagmentObjects.msi。

实际的Microsoft.SqlServer.SqlClrProvider.dll将安装到您的GAC中。其余的相关程序集将安装在C:\ Program Files \ Microsoft SQL Server \ 130 \


1
投票

事实证明,在我的情况下,这只是添加所有DLL与引用相同版本号的问题。这必须手动完成。它们都可以在C:\ Program Files(x86)\ Microsoft SQL Server \ 130 \ DTS \ Tasks \(对于Microsoft.SqlServer.Smo.dll)或C:\ Program Files(x86)\ Microsoft SQL Server \ 130中找到在Microsoft.SqlServer.SqlClrProvider.dll的情况下,\ Tools \ Binn \ ManagementStudio \。如果您查看这两个文件夹中所有相关/必需DLL的属性,它们都会说版本13.0.15700。但是一旦你浏览到每一个,并将其作为参考,VS2015中的参考属性都说版本13.100.0.0 ???????那个怎么样!一切正常。


1
投票

我有类似的问题,我在Visual Studio中的异常要求:Microsoft.SqlServer.Diagnostics.STrace,Version = 13.0.0.0

在Project References中,我有一个版本为13.0.1601的DLL ...而且版本(由VS浏览)是13.100.0.0,所以我用版本13.0.4424替换了Project References中的DLL ...和版本(由VS浏览)是13.0.0.0

一切都按预期工作。

在这里的某处产生了一些问题。

  1. 为什么有两个版本的DLL?
  2. 为什么版本13.0.1601的dll版本为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 Gagnon([email protected]


0
投票

我使用了nuget unoffical package,this one

它运行良好,不需要在生产服务器上单独安装任何东西。

© www.soinside.com 2019 - 2024. All rights reserved.