Changed database context to ...
当 SQL 中包含 a 时,是否有某种方法可以停止该消息USE database
?
5 回答
您需要设置 的错误级别,sqlcmd
默认为 0。注意:不要将此处的错误级别与sqlcmd
返回的退出代码混淆,例如,cmd.exe
作为ERRORLEVEL
.
sqlcmd
要为所有会话禁用此消息,请使用-m
命令行选项:
sqlcmd -m 1 <other options>
要为代码块禁用此消息,请使用:setvar
批处理命令:
USE [mydb]
GO
-- Disable message for next USE command
:setvar SQLCMDERRORLEVEL 1
USE [mydb]
GO
-- Reenable
:setvar SQLCMDERRORLEVEL 0
...
要:setvar
在 Management Studio 中使用(或其他 SQLCMD 批处理命令),您需要为您所在的查询窗口启用 SQLCMD 模式(菜单“查询/SQLCMD 模式”)。当以 ':' 开头的行具有灰色背景时,您会看到它已启用。
我通过让 SQLCMD 在一个目录中运行我的所有 .sql 脚本来发布更新。但是,当您使用 USE myDB 启动所有内容时,您会在日志文件中收到重复更改的上下文消息,这很乏味。所以我用这个衬里代替。如果上下文确实发生了变化,您仍然会收到消息,这很好。
IF EXISTS(SELECT DB_NAME() WHERE DB_NAME() not IN ('myDB')) 使用 MyDB
另一个想法是在您的 SQL 中使用三部分名称,例如,而不是...
USE Pubs; SELECT name FROM dbo.Authors;
...写...
SELECT name FROM Pubs.dbo.Authors;
就我而言,一个简单的解决方案是先运行一个小查询,例如SELECT 1;
. 因此,该消息Changed database context...
与此第一个查询耦合,并且检索了以下查询而没有此错误消息。
简单的解决方案:添加-m 1
到您的sqlcmd
命令行参数。