web-dev-qa-db-fra.com

Comment arrêter le message "Contexte de base de données modifié en ..."

Existe-t-il un moyen d’arrêter le message Changed database context to ... lorsque le code SQL contient un USE database?

15
SteveC

Vous devez définir le errorlevel de sqlcmd, qui par défaut est 0. Remarque: ne confondez pas le niveau d'erreur ici avec le code de sortie de sqlcmd qui est retourné à, par exemple, cmd.exe en tant que ERRORLEVEL.

Pour désactiver ce message pour l'ensemble d'une session sqlcmd, utilisez l'option -m en ligne de commande:

sqlcmd -m 1 <other options>

Pour désactiver ce message pour un bloc de code, utilisez la commande :setvar batch:

USE [mydb]
GO

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

-- Reenable
:setvar SQLCMDERRORLEVEL 0

...

Pour utiliser le :setvar (ou d'autres commandes par lots SQLCMD) dans Management Studio, vous devez activer le mode SQLCMD pour la fenêtre de requête dans laquelle vous vous trouvez (menu "Mode Requête/SQLCMD"). Vous verrez qu'il est activé lorsque les lignes commençant par ':' ont un fond gris.

26
Christian.K

Je publie des mises à jour en laissant SQLCMD exécuter tous mes scripts .sql dans un répertoire. Mais lorsque vous commencez tout avec USE myDB, vous obtenez un message de contexte modifié répétitif dans le fichier journal, qui est ennuyeux. Donc, j'utilise cette doublure à la place. Si le contexte est réellement modifié, vous recevez toujours le message, ce qui est bien. 

SI EXISTE (SELECT DB_NAME () WHERE DB_NAME () not IN ('myDB')) USE MyDB

6
Jolly Tom

Une autre idée consiste à utiliser des noms en trois parties dans votre code SQL, par exemple. au lieu de...

USE Pubs; SELECT name FROM dbo.Authors;

...écrire...

SELECT name FROM Pubs.dbo.Authors;

6
Aaron Bertrand

Dans mon cas, une solution simple et facile consistait à lancer une petite requête, telle que SELECT 1;. Le message Changed database context... a donc été couplé à cette première requête et les requêtes suivantes ont été récupérées sans ce message d'erreur.

2
user2335044