Dans SQL Server Management Studio, je voudrais savoir ce qu'est le mode SQLCMD?
Exactement ce que cela ressemble.
C'est un mode qui vous permet de créer des scripts SQLCMD.
Depuis MSDN - Modification des scripts SQLCMD avec l'éditeur de requêtes :
Pour utiliser l'éditeur de requête du moteur de base de données pour écrire ou modifier des scripts SQLCMD, vous devez activer le mode de script SQLCMD.
Dans SQL Server Management Studio, définissez-le via le menu Requête (Requête -> Mode SQLCMD).
J'ai fait quelques recherches supplémentaires, alors voici ma compréhension de cela pour étendre ce qui a été écrit jusqu'à présent:
SQLCMD.exe est un utilitaire de console inclus dans l'installation de SQL Server 2005 et supérieur. Vous pouvez généralement le trouver dans un chemin comme c:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE
.
Il s'agit d'un environnement de script simple qui permet d'automatiser les tâches liées au serveur SQL. Par exemple, vous pouvez écrire et exécuter un script qui se connectera à une instance spécifique de SQL Server, exécuter des scripts à partir d'un répertoire donné sur cette connexion et stocker la sortie dans un fichier spécifié.
Invoke-Sqlcmd
La cmdlet a été introduite avec SQL Server 2008 pour remplacer cet outil par une approche standardisée basée sur Powershell, préservant la plupart de la syntaxe et des fonctionnalités d'origine.
Dans SSMS, mode SQLCMD est un mode d'exécution de script qui simule l'environnement sqlcmd.exe et accepte donc certaines commandes qui ne font pas partie du langage T-SQL. Contrairement à sqlcmd.exe
, il contacte la base de données en utilisant SqlClient (de la même manière que SSMS), pas [~ # ~] odbc [~ # ~] fournisseur de données, donc, dans certains aspects, il peut avoir un comportement différent de celui de sqlcmd.exe
.
L'exécution de scripts en mode SQLCMD permet d'utiliser des commandes typiques de sqlcmd.exe
environnement. Cependant, il n'y a pas de prise en charge d'IntelliSense ou de débogage pour le mode SQLCMD, donc la maintenance de scripts qui mélangent du T-SQL propre avec du code spécifique à SQLCMD peut être pénible. Par conséquent, il ne doit être utilisé que lorsque cela est nécessaire.
Supposons qu'une entreprise ait une convention de dénomination pour les bases de données qui incluent l'environnement dans le nom, par exemple: MyDb _ Prod , MyDb _ Test , MyDb _ Dev . Cette convention peut être utilisée pour minimiser les risques d'erreurs .
Lorsqu'un développeur écrit un script T-SQL, il devra être exécuté dans différents environnements dans le processus de déploiement/test, ce qui nécessiterait de nombreuses versions du code:
SELECT *
FROM [MyDb_Dev].[dbo].[MyTable1] -- MyDb_Dev -> MyDb_Test -> MyDb_Prod
Au lieu de cela, nous pouvons supposer que le nom de la base de données sera fourni en tant que variable SQLCMD dans le processus de déploiement et que le même fichier sera déployé exactement dans tous les environnements:
-- :setvar databaseName "MyDb_Dev" -- uncomment for testing in SSMS
SELECT *
FROM [$(databaseName)].[dbo].[MyTable1]
(dans cet exemple simple, le nom de la base de données peut être complètement omis, mais si vous avez des jointures inter-bases de données, l'utilisation du nom de la base de données est nécessaire)
"Vous utilisez des scripts SQLCMD lorsque vous devez traiter des commandes système Windows et des instructions Transact-SQL dans le même script."
"Par défaut, le mode SQLCMD n'est pas activé dans l'éditeur de requêtes. Vous pouvez activer le mode de script en cliquant sur l'icône Mode SQLCMD dans la barre d'outils ou en sélectionnant Mode SQLCMD dans le menu Requête."
Référence: MSDN