Есть ли способ остановить сообщение Changed database context to ...
, когда кусок SQL имеет USE database
в нем?
Как остановить сообщение "Измененный контекст базы данных..."
Ответ 1
Вам нужно установить уровень ошибок sqlcmd
, который по умолчанию равен 0. Примечание: не путайте уровень ошибок здесь с кодом выхода sqlcmd
который возвращается, например, cmd.exe
как ERRORLEVEL
.
Чтобы отключить это сообщение для всего сеанса sqlcmd
, используйте параметр командной строки -m
:
sqlcmd -m 1 <other options>
Чтобы отключить это сообщение для блока кода, используйте команду :setvar
batch:
USE [mydb]
GO
-- Disable message for next USE command
:setvar SQLCMDERRORLEVEL 1
USE [mydb]
GO
-- Reenable
:setvar SQLCMDERRORLEVEL 0
...
Чтобы использовать :setvar
(или другие командные команды SQLCMD) в Management Studio, вам необходимо включить режим SQLCMD для окна запроса, в котором вы находитесь (меню "Режим Query/SQLCMD" ). Вы увидите, что он включен, когда строки, начинающиеся с ':', имеют серый фон.
Ответ 2
Другая идея - использовать имена трех частей в вашем SQL, например. вместо...
USE Pubs; SELECT name FROM dbo.Authors;
... пиши...
SELECT name FROM Pubs.dbo.Authors;
Ответ 3
Я выпускаю обновления, запустив SQLCMD все мои сценарии .sql в каталоге. Но когда вы запускаете все с помощью USE myDB, вы получаете повторяющееся измененное контекстное сообщение в файле журнала, что является скучным. Поэтому я использую этот один вкладыш. Если контекст действительно изменен, вы все равно получаете сообщение, что хорошо.
IF EXISTS (SELECT DB_NAME() WHERE DB_NAME() not IN ('myDB')) USE MyDB
Ответ 4
В моем случае простым и простым решением было сначала выполнить небольшой запрос, например SELECT 1;
. Поэтому сообщение Changed database context...
было связано с этим первым запросом, и следующие запросы были получены без этого сообщения об ошибке.