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

PowerShell脚本中SQL Package Extract命令执行失败求助

问题分析与解决方法

错误根源

报错核心是找不到Microsoft.SqlServer.TransactSql.ScriptDom, Version=12.0.0.0程序集,大概率是安装VS2022 SSDT后,系统内该程序集被更新至更高版本(如16.x),但当前运行的旧版SqlPackage仍依赖12.0版本,导致加载冲突。


解决步骤

1. 确认当前SqlPackage版本

运行以下命令查看版本,判断是否为旧版(15.x及以下):

sqlpackage /version

2. 补充缺失的12.0版本依赖包

  • 通过NuGet下载12.0.0.0版本的Microsoft.SqlServer.TransactSql.ScriptDom:
    Install-Package Microsoft.SqlServer.TransactSql.ScriptDom -Version 12.0.0.0
    
  • 找到下载后的程序集(路径示例:packages\Microsoft.SqlServer.TransactSql.ScriptDom.12.0.0.0\lib\net40),复制到SqlPackage的安装目录(默认路径如C:\Program Files\Microsoft SQL Server\150\DAC\bin)。

3. 配置程序集版本重定向(若步骤2无效)

在SqlPackage.exe所在目录创建SqlPackage.exe.config文件,添加重定向规则,让高版本程序集替代12.0版本加载:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.SqlServer.TransactSql.ScriptDom" publicKeyToken="89845dcd8080cc91" culture="neutral" />
                <bindingRedirect oldVersion="0.0.0.0-16.0.0.0" newVersion="16.0.0.0" />
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>

注:newVersion需替换为你系统中实际存在的版本号,可在C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SqlServer.TransactSql.ScriptDom目录下查看。

4. 直接使用VS2022自带的SqlPackage

VS2022 SSDT安装的SqlPackage路径示例:C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\160,修改脚本中调用SqlPackage的部分,指定完整路径:

& "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\160\SqlPackage.exe" $arguments

该版本依赖更高版本的ScriptDom,不会出现12.0版本缺失问题。

5. 调整环境变量优先级

检查系统PATH,将VS2022自带的SqlPackage路径移至旧版路径之前,确保默认运行的是新版程序。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 14:49:53