无法在生产ASP.net站点上加载文件或程序集Microsoft.SqlServer.SqlClrProvider,它在哪里?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (18)

在我的ASP.net网站上,我有一个参考Microsoft.SQLserver.SMO。我将此引用复制到我的生产服务器上,并得到无法加载错误Microsoft.SqlServer.Management.Sdk.Sfc。这个错误是通过从dll复制dll修复的

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

然而,然后我得到了同样的错误,但Microsoft.SqlServer.SqlClrProvider无法找到。

我在哪里可以找到SqlClrProviderDLL?它适用于我的本地主机,所以它必须在某个地方。

提问于
用户回答回答于

将SqlClrProvider dll复制到sqlserver Binn目录中没有帮助。

原因:

这是因为在生产机器和目标机器上使用不同版本的SQLServer。

解:

确保使用的是与目标机器上相同版本的SMO库。如果目标机器上有SQLServer2008,则必须使用v10库,否则会出现此错误。

MoreDetails:

我的目标机器上的SqlServer版本是2008(10),我的SqlServer2014(12)在我自己的机器上。当我使用SMO库visualstudio添加了v12库(Microsoft.SqlServer.SMO,...),但smo只是一个使用SqlClrProvider的shell,并且它期望在系统程序集上具有相同版本的SqlClrProvider。这会导致应用程序在目标机器上崩溃,因为SqlClrProvider的v12不存在。通过使用v10 smo库,我解决了这个问题

用户回答回答于

在开发机器或安装了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。

要查看更详细的解释,请按照以下链接之一进行操作:

扫码关注云+社区