You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio SSDT项目中签名SQL Server CLR DLL遇问题求助

SSDT中CLR程序集签名发布问题排查

背景

用户在Visual Studio数据库项目(SSDT)中尝试为CLR程序集签名以发布到SQL Server,但多次尝试均失败。不过手动签名流程可成功执行,步骤如下:

手动签名成功流程

  • 在SQL Server中创建证书并导出
  • 使用pvk2pfx.exe将PVK格式证书转换为PFX格式:
pvk2pfx.exe -pvk C:\Certs\ClrCert.pvk -spc C:\Certs\ClrCert.cer -pfx C:\Certs\ClrCert.pfx -pi Pa$$w0rd -po Pa$$w0rd
  • 使用signtool.exe为项目BIN文件夹中的DLL签名:
signtool.exe sign /fd SHA256 /f C:\Certs\ClrCert.pfx /p Pa$$w0rd C:\...\bin\Release\ClrTest.dll 
  • 导入已签名的程序集并执行:
-- 导入程序集
CREATE ASSEMBLY CLRTest FROM 'C:\...\CLRTest.dll' WITH PERMISSION_SET = SAFE;
GO

-- 从程序集导入函数
CREATE FUNCTION [dbo].[FooFunction] (@year INT NULL)
RETURNS BIT
AS EXTERNAL NAME [CLRTest].[UserDefinedFunctions].[FooFunction]

-- 执行函数
select dbo.FooFunction(2022)

尝试1:构建后事件签名失败原因

操作步骤

  1. 在项目属性中设置构建后事件命令行:项目 > 属性 > 生成事件 : 生成后事件命令行,命令为:
"C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x86\signtool.exe" sign /fd SHA256 /f C:\Certs\ClrCert.pfx /p Pa$$w0rd "C:\Workspace\CLRTest\bin\Release\ClrTest.dll"
  1. 构建输出显示DLL签名成功,但发布时出现错误:

CREATE or ALTER ASSEMBLY for assembly 'CLRTest' with the SAFE or EXTERNAL_ACCESS option failed because the 'clr strict security' option of sp_configure is set to 1.
Microsoft recommends that you sign the assembly with a certificate or asymmetric key...

原因分析

SSDT的发布流程不会直接使用bin\Release目录下的已签名DLL。发布时,SSDT会重新生成程序集文件(通常调用obj目录下的中间文件或重新编译),覆盖了构建后事件签名的版本,导致最终发布到SQL Server的是未签名的程序集,触发clr strict security的校验错误。


尝试2:Visual Studio签名向导错误排查

操作步骤

  1. 打开签名设置窗口:项目 > 属性 > SQLCLR > 签名
  2. 选择证书并提供密码
  3. 构建时出现错误:

Cannot import the following key file: ..........\Certs\ClrCert.pfx. The key file may be password protected.

错误原因及解决方向

  1. 相对路径错误:多层相对路径..\..\..\..\..\Certs\ClrCert.pfx可能指向了错误位置,导致Visual Studio无法找到PFX文件,建议改用绝对路径测试。
  2. 密码不匹配:输入的密码与PFX文件的保护密码不一致,需确认密码正确性。
  3. 文件权限问题:Visual Studio进程没有访问该PFX文件的权限,可尝试将PFX文件复制到项目目录下,或调整文件权限赋予Visual Studio访问权限。
  4. PFX文件损坏:PFX文件本身损坏无法正常导入,可重新生成PFX文件测试。

内容的提问来源于stack exchange,提问作者Muflix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 01:50:50