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

Github Action执行sqlpackage报错:找不到sqlpackage.dll

问题排查:Github Action部署Azure SQL时sqlpackage提示找不到sqlpackage.dll

问题根源

sqlpackage是基于.NET的应用程序,运行时需要依赖同目录下的sqlpackage.dll、sqlpackage.deps.json、sqlpackage.runtimeconfig.json等配套文件。你当前仅将单个可执行文件移动到/usr/local/bin,导致程序启动时无法找到必需的依赖组件,从而报错。

修复方案

1. 修改sqlpackage安装步骤,完整复制所有依赖文件

将原来仅移动单个可执行文件的命令,改为复制整个解压目录的所有内容到/usr/local/bin:

- name: Install sqlpackage
  if: steps.cache.outputs.cache-hit != 'true'
  run: |
    wget https://aka.ms/sqlpackage-linux -O sqlpackage.zip
    unzip sqlpackage.zip -d sqlpackage
    chmod +x sqlpackage/sqlpackage
    sudo cp -r sqlpackage/* /usr/local/bin/

2. 补充缓存命中后的恢复步骤

当缓存命中时,直接从缓存目录复制所有文件到目标路径:

- name: Restore sqlpackage from cache
  if: steps.cache.outputs.cache-hit == 'true'
  run: sudo cp -r sqlpackage/* /usr/local/bin/

3. 修复部署命令的语法小问题

部署步骤中/TargetDatabaseName:TestDB末尾的反斜杠后缺少空格,可能导致参数解析错误,修正后:

- name: Deploy DACPAC to TestDB
  run: |
    /usr/local/bin/sqlpackage /Action:Publish \
               /SourceFile:./${{ env.DB_DACPAC_NAME }}/db.dacpac \
               /TargetServerName:${{ secrets.DB_SERVER }} \
               /TargetDatabaseName:TestDB \
               /TargetUser:${{ secrets.DB_USER }} \
               /TargetPassword:${{ secrets.DB_PASSWORD }} \
               /Diagnostics:true

优化建议

使用微软官方提供的sqlpackage-action替代手动下载安装,该Action会自动处理依赖和路径配置,简化Workflow:

- name: Install sqlpackage
  uses: microsoft/sqlpackage-action@v2
  with:
    version: 'latest'

使用该Action后,可直接在部署步骤中调用sqlpackage命令,无需手动指定路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 20:35:16