如何在 TFS 中使用命令行任务在发布期间备份 SQL 数据库?

Posted

技术标签:

【中文标题】如何在 TFS 中使用命令行任务在发布期间备份 SQL 数据库?【英文标题】:How do you backup a SQL Database during release in TFS using command line task? 【发布时间】:2018-06-22 02:54:00 【问题描述】:

我希望在我的 TFS 版本中使用命令行任务备份 SQL 数据库,如下所示:

工具:SqlCmd

参数:-U 用户名 -P 密码 -S sqlserver\instance -Q "BACKUP DATABASE [ mydatabase] TO DISK='X:\SomePath\mydatabase.bak' WITH COPY_ONLY"

如果我复制/粘贴并在命令窗口中运行,则输出到 TFS 日志的结果命令有效。

但由于某种原因,TFS 在尝试执行命令时会抛出错误。

这是日志信息:

2018-06-22T02:45:02.1384055Z ##[command]SqlCmd -U 用户名 -P 密码 -S sqlserver\instance -Q "备份数据库 [mydatabase] TO DISK='X:\SomePath\mydatabase.bak ' WITH COPY_ONLY"

2018-06-22T02:45:02.2009053Z Sqlcmd: '-Q "备份数据库 [ABS-dev] TO DISK='D:\SQLBACKUP\ABS-dev_Release.bak' WITH COPY_ONLY':意外 争论。进入 '-?'求助。 2018-06-22T02:45:02.2634060Z

[错误]进程已完成,退出代码为 1。

我想知道是否有线索表明指示错误的行没有用双引号终止,并且尝试了诸如在查询段周围添加额外的双引号之类的方法,但到目前为止还没有运气。

有什么想法吗?

【问题讨论】:

您使用的是哪个版本的 TFS?您的构建代理是否在 Windows 机器上运行? 【参考方案1】:

您可以尝试下面的参数,使用/Q 而不是-Q

-U username -P password -S sqlserver\instance /Q "BACKUP DATABASE [mydatabase] TO DISK='X:\SomePath\mydatabase.bak' WITH COPY_ONLY"

【讨论】:

以上是关于如何在 TFS 中使用命令行任务在发布期间备份 SQL 数据库?的主要内容,如果未能解决你的问题,请参考以下文章

我们如何在门控签入期间获取搁置集名称并将其分配给 tfs 构建任务中的变量

可以在 TFS 2017 中执行发布期间更改变量的值

是否可以设置反编译代码的TFS任务?

如何在 TFS 2017 上运行项目备份

如何获取 tf.exe(TFS 命令行客户端)?

使用 TFS 命令行部署 SSAS 项目