How to stop the "Changed database context to ..." message

sql-server, sql-server-2005, sql-server-2008

Solution

You need to set the errorlevel of `sqlcmd`, which defaults to 0. Note: don't confuse the errorlevel here with the exit code of `sqlcmd` that is returned to, say, `cmd.exe` as the `ERRORLEVEL`.

To disable this message for all of an `sqlcmd` session, use the `-m` commandline option:

sqlcmd -m 1 <other options>

To disable this message for a block of code, use the `:setvar` batch command:

USE [mydb]
GO

-- Disable message for next USE command
:setvar SQLCMDERRORLEVEL 1
USE [mydb]
GO

-- Reenable
:setvar SQLCMDERRORLEVEL 0

...

To use the `:setvar` (or other SQLCMD batch commands) in Management Studio, you need to enable the SQLCMD mode for the query window you're in (menu "Query / SQLCMD Mode"). You'll see that it is enabled, when lines starting with ':' have a gray background.

Problem

Is there some way to stop the `Changed database context to ...` message when the piece of SQL has a `USE database` in it ?

Original source