我正在编写脚本生成脚本。该脚本正在生成 DDL 语句列表。
生成从util_generator.sql
数据库连接开始:
USE [TARGET_DATABASE]
GO
...
Many queries
Followed by print statements
...
因为这是一个很长的脚本,长度未知。我们用SQLCMD.exe
sqlcmd -s sa\password -i util_generator.sql -r0 -o util_1.sql
生成的脚本util_1.sql
如下所示:
Changed database context to 'TARGET_DATABASE'.
CREATE TABLE ...
CREATE INDEX ...
CREATE VIEW ...
问题是生成的脚本util_1.sql
在未知命令上失败Changed database context to 'TARGET_DATABASE'.
我需要帮助来禁止Changed database context to 'TARGET_DATABASE'.
来自SQLCMD.exe
使用 SSMSutil_generator.sql
效果很好,不会产生任何Changed database context to 'TARGET_DATABASE'.
消息。
但是我们不能util_generator.sql
在 CLI 的 SSMS 上运行未知长度的输出脚本。
请告知如何抑制Changed database context to 'TARGET_DATABASE'.
SQLCMD.exe 中的语句
您可以抑制严重级别低于 10 的(错误)消息。添加 -m10 作为启动选项。
据我所知,SQLCMD 没有直接的方法来抑制该特定消息。但也许抑制信息类型的消息(如上所述)会削减它?
或者,当然,使用 Dudi 建议的 -d 开关。
根据 Scott Hodgin 的评论。
USE [TARGET_DATABASE]
解决方案是从util_generator.sql
脚本中删除。SQLCMD.exe
并通过using-d
选项分配目标数据库。预期
SQLCMD.exe
是: