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

PowerShell加载Microsoft.SqlServer.Dac.Model.TSqlModel遇类型加载异常求助

解决加载Dacpac时的System.TypeLoadException错误

问题原因

该错误通常由.NET Framework版本兼容性、PowerShell运行环境不匹配,或是DAC组件依赖缺失导致,核心是无法正确加载System.Diagnostics.Eventing.EventDescriptor类型。

解决方法

  • 使用Windows PowerShell 5.1而非PowerShell Core/7+
    Microsoft.SqlServer.Dac.dll基于.NET Framework构建,PowerShell Core(.NET Core/.NET 5+)与该组件存在兼容性问题,务必使用Windows PowerShell 5.1执行脚本。

  • 升级.NET Framework到4.7.2及以上版本
    旧版本.NET Framework可能存在类型加载的兼容性问题,可通过以下命令检查当前版本:

    Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -Recurse | Get-ItemProperty -Name Version,Release -ErrorAction SilentlyContinue | Where-Object { $_.PSChildName -match '^(?!S)\p{L}' } | Select-Object PSChildName, Version, Release
    

    若版本低于4.7.2,安装最新的.NET Framework版本。

  • 确保DAC组件与Dacpac版本兼容
    你使用的是SQL Server 2022(160)的DAC组件,若Dacpac由旧版本SQL Server生成,可通过指定兼容级别解决:

    $modelOptions = New-Object Microsoft.SqlServer.Dac.Model.ModelLoadOptions
    # 指定兼容级别为SQL Server 2022,或使用Latest自动匹配
    $modelOptions.SqlServerCompatibilityLevel = [Microsoft.SqlServer.Dac.Model.SqlServerCompatibilityLevel]::SqlServer2022
    $model = [Microsoft.SqlServer.Dac.Model.TSqlModel]::LoadFromDacpac($dacpacFilePath, $modelOptions)
    
  • 加载所有依赖的DAC程序集
    除已加载的两个程序集外,添加DAC目录下的其他核心依赖:

    Add-Type -Path 'C:\Program Files\Microsoft SQL Server\160\DAC\bin\Microsoft.SqlServer.TransactSql.ScriptDom.dll'
    Add-Type -Path 'C:\Program Files\Microsoft SQL Server\160\DAC\bin\Microsoft.SqlServer.Types.dll'
    
  • 以管理员身份运行PowerShell
    权限不足可能导致程序集加载失败,右键选择Windows PowerShell并以管理员身份启动后重试脚本。

  • 修复SQL Server DAC组件
    若上述方法无效,通过控制面板修复SQL Server 2022:

    1. 打开「控制面板」→「程序和功能」
    2. 找到「Microsoft SQL Server 2022」,点击「更改」
    3. 选择「修复」,按照向导完成DAC组件的修复安装

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 23:47:27