部署依赖MySQL.data.dll的SQL Server程序集遇CLR验证错误求助
解决Visual Studio 2022部署MySQL.data.dll相关CLR程序集问题
先搞定SQL72014错误:程序集未在SQL目录找到
- 先开启SQL Server的CLR集成,执行以下SQL命令:
sp_configure 'show advanced options', 1; RECONFIGURE; sp_configure 'clr enabled', 1; RECONFIGURE; - 将MySQL.data.dll复制到SQL Server的默认程序集目录(一般是
C:\Program Files\Microsoft SQL Server\MSSQLXX.MSSQLSERVER\MSSQL\Binn,把XX替换成你的SQL版本号);或者部署时直接指定程序集的完整路径。 - 回到Visual Studio的数据库项目中,检查MySQL.data.dll的设置:部署操作改为
Create Assembly,生成操作设为Build,同时确认引用路径指向本地的MySQL.data.dll文件。
再解决CREATE ASSEMBLY失败:未通过CLR验证
- 核对MySQL.data.dll版本与SQL Server的兼容性:SQL Server CLR仅支持特定.NET框架版本(比如SQL Server 2019支持.NET Framework 4.8),确保你使用的MySQL.data.dll是基于兼容框架编译的。
- 使用
PERMISSION_SET = UNSAFE创建程序集,因为MySQL.data.dll大概率包含非托管代码,不符合CLR安全验证逻辑,必须开启不安全权限。执行这条SQL:
注意:开启UNSAFE权限需要给登录账户赋予CREATE ASSEMBLY MySQLData FROM 'C:\你的dll路径\MySQL.data.dll' WITH PERMISSION_SET = UNSAFE;EXTERNAL ACCESS ASSEMBLY权限,执行以下命令:USE master; GRANT EXTERNAL ACCESS ASSEMBLY TO [你的登录账户]; - 用PEVerify工具检查程序集:该工具位于.NET Framework目录(比如
C:\Windows\Microsoft.NET\Framework\v4.0.30319\PEVerify.exe),打开命令行执行:
如果返回错误,说明程序集确实包含无法验证的代码,只能通过UNSAFE权限集部署。PEVerify.exe MySQL.data.dll /verbose
额外注意事项
- 确保SQL Server服务账户对MySQL.data.dll所在目录有读取权限,权限不足也会导致部署失败。
- 如果使用的是最新版MySQL Connector/NET,可能已不再支持SQL Server CLR集成,可尝试切换到兼容的旧版本(比如6.x系列的Connector/NET)。
内容的提问来源于stack exchange,提问作者SDiallo
相关产品推荐
相关产品推荐

