linux - 在 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 也会失败。这可能是网络/防火墙的问题吗?
解决方案
请尝试这样的事情:
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
推荐阅读
- typescript - 升级到 rc.0 时 Material-UI v5 typescript 错误
- sql-server - 创建带有安装程序问题的 OneIM DB
- kernel - 内核中的 rwsem 是否可以在写入者持有时由读者持有?
- ubuntu - 将 OpenCL.so 库添加到 makefile,我收到错误“未定义的引用”
- javascript - 在无线电更改上提交 + 防止页面重新加载,在 Firefox 中不起作用
- sql - 如何使用 count(*) 从另一个具有条件和分组依据的表中进行选择?
- diff - 是否有通配符来修补两个字符之间的任何字符序列?
- mysql - 使用 JOIN mysql 选择外键
- android - 在 kotlin 中接收 whatsapp 语音消息
- python - 给定一个非负整数 y,你正在编写一个程序来找到最大的非负整数 x,使得 x^2 + x ≤ y