【发布时间】:2018-11-10 05:36:53
【问题描述】:
我一直在研究 VSTS,以便持续集成/部署到本地服务器。我已经成功地在我的 VSTS Git 存储库中构建了一组虚拟工件,其中包括 Customer 和 Country 表。我已经通过 .dacpac 成功部署了,但我希望通过基于脚本的部署来复制相同的部署。
对于构建,我将发布所有工件,我的 sql 文件位于此处:
在发布任务中,我使用的是 SQL 数据库部署任务。我用于 .sql 而不是 .dacpac 部署的设置如下:
“部署到开发”任务的发布失败,日志如下:
2018-05-31T08:14:21.4218768Z ##[section]Starting: Deploy to Dev
2018-05-31T08:14:21.4233677Z ==============================================================================
2018-05-31T08:14:21.4233951Z Task : SQL Server Database Deploy
2018-05-31T08:14:21.4234238Z Description : Deploy to SQL Server Database using DACPAC or SQL scripts
2018-05-31T08:14:21.4234458Z Version : 0.3.10
2018-05-31T08:14:21.4234642Z Author : Microsoft Corporation
2018-05-31T08:14:21.4234859Z Help : [More Information](https://aka.ms/sqldacpacmachinegroupreadme)
2018-05-31T08:14:21.4235150Z ==============================================================================
2018-05-31T08:14:24.2246881Z ##[error]Exception calling "GetDirectoryName" with "1" argument(s): "The path is not of a legal form."
2018-05-31T08:14:24.2348684Z ##[section]Finishing: Deploy to Dev
我曾认为使用**/*.sql 通配符意味着它将循环遍历所有SQL 文件并执行。我也通过 jsut 要求它执行客户文件 (**/Customer.sql) 来尝试相同的操作并收到相同的错误。
我希望有人可以检查我的配置并找出我的理解不足的地方?
非常感谢。
【问题讨论】:
-
如果您想运行 SQL 脚本,您可以让 SSDT 生成一个 SQL 脚本然后运行它。您尝试实施的方法将不起作用。您不能只按字母顺序运行 SQL 脚本列表并期望架构会正确更新;架构更改经常对它们的运行顺序有要求。
-
你能在这里或在 OneDrive 上分享详细日志吗? (添加 system.debug 变量并将其设置为 true,然后开始发布)你能用一个新项目重现这个问题吗?如果是这样,您可以在 OneDrive 上共享示例项目。
-
@DanielMann OP 是对的。我使用 DacPac 选项 ok,然后尝试运行一些使用通配符数字命名的部署后脚本,我遇到了同样的问题。文档具有误导性:
Wildcards can be used. For example, **/*.sql for sql file present in all sub folders
标签: sql-server continuous-integration azure-devops continuous-deployment azure-pipelines-release-pipeline