首页 > 解决方案 > 在 Ubuntu 上使用 SQLCMD 不更新 Azure SQL 数据库

问题描述

我在 Ubuntu 机器上有 SQLCMD。我解析许多 XML 文件并生成插入/更新/删除语句并将它们保存在 .sql 文件中。因此,单个 .sql 文件包含许多 sql 语句。它们都包含在事务中。我运行 SQLCMD 实用程序,将文件作为参数传递。我的数据库是 Azure SQL。我从来没有得到错误结果,但是很多时候,我的数据库没有被更新。我不知道为什么会这样,因为没有错误。如果我直接在服务器上运行这些 .sql 文件,它会更新数据库。

有没有办法可以追踪/调试正在发生的事情?

这是我的 SQLCMD 命令

$sqlcmd -i mysqlFile.sql -m-1 -p

数据库配置在环境变量中设置。

编辑

添加更多细节,我正在运行一个 shell 脚本,它生成许多 sql 文件,然后在 Azure SQL 上执行这些文件。每个 sql 文件都有一个事务和事务内的许多 DML 语句。它还具有适当的 try/catch 封闭。在这个过程中,一些 SQL 文件被正确执行并更新了数据库,但对于一些,什么都没有改变。我在执行 SQLCMD 时没有看到任何错误,它只是说“0 行受影响”。一旦一个 sql 文件失败,所有后续的 sql 也会失败。这可能是网络/防火墙的问题吗?

标签: linuxubuntuazure-sql-databasesqlcmd

解决方案


请尝试这样的事情:

echo :setvar param1 DUMMYVALUE > param_input.sql
cat input.sql >> param_input.sql
sqlcmd –S yourServerName.database.windows.net -d database -U user -P pass -i param_input.sql 

推荐阅读