[SQL Server] SQLCmd certains exemples d'utilisations

-- =============================================

-- Author:      Zouhaier KHARROUBI

-- Create date: 31/03/2019

-- Description: SQLCmd certains exemples d'utilisations

-- =============================================

/******* Exemple N° 1 ***********/

--Lancer un fichier test.sql

/*

Le fichier test.sql contient les lignes de codes ci-dessous :

SELECT [name]

     ,[object_id]

     ,[principal_id]

     ,[schema_id]

     ,[parent_object_id]

     ,[type]

     ,[type_desc]

     ,[create_date]

     FROM [sys].[all_objects]

WHERE name='$(name_objet)';

-- Le paramètre '$(name_objet)' est transmé dynamiquement via la variable name_objet

SELECT [object_id]

     ,[name]

     ,[column_id]

     ,[system_type_id]

     ,[user_type_id]

     ,[max_length]

     ,[precision]

     ,[scale]  

FROM [sys].[all_columns]

WHERE name='$(name_col)';

-- Le paramètre '$(name_col)' est transmé dynamiquement via la variable name_col

*/

--Déclarer et initialiser les variables

:setvar cheminPrincipal "\\MonServeurFichiers\MesScripts\"

:setvar nomFichierScript "test.sql"

:setvar nomFichierErreur "test.err"

:setvar nomFichierResultat "test.rpt"

--Déclarer et initialiser les variables

--Les deux variables correspondent aux deux paramètres à envoyer au script test.sql

--

:setvar name_objet "sp_replsetsyncstatus"

:setvar name_col "database_id"

--Définir le fichier qui reçoit le resultat d'exécution du script

:out $(cheminPrincipal)$(nomFichierResultat)

--Définir le fichier qui reçoit le les messages d'erreur d'exécution du script

:error $(cheminPrincipal)$(nomFichierErreur)

--Supprimer le fichier du résultat s'il existe

:!!if exist $(cheminPrincipal)$(nomFichierResultat) del $(cheminPrincipal)$(nomFichierResultat)

--Supprimer le fichier d'erreur s'il existe

:!!if exist $(cheminPrincipal)$(nomFichierErreur) del $(cheminPrincipal)$(nomFichierErreur)

--Se connecter à l'instance SQL

:connect MonIntanceSQLServer

--Se connecte à la base

USE [master]

--Lancer le fichier test.sql

:r $(cheminPrincipal)$(nomFichierScript)

--Afficher le contenu du fichier test.rpt

:!!type $(cheminPrincipal)$(nomFichierResultat)

--Afficher le contenu du fichier test.err

:!!type $(cheminPrincipal)$(nomFichierErreur)

/******* Exemple N° 2 ***********/

--Se connecter à l'instance SQL

:connect MonIntanceSQLServer

--Déclarer et initialiser les variables

:setvar name1 "TABLE_PRIVILEGES"

:setvar name2 "cid"

--Lancer les requêtes avec utilisation des deux paramètres

SELECTTOP 10 [name]

     ,[object_id]

     ,[principal_id]

     ,[schema_id]

     ,[parent_object_id]

     ,[type]

     ,[type_desc]

     ,[create_date]

     FROM [master].[sys].[all_objects]

WHEREname='$(name1)';

SELECTTOP 25 [object_id]

     ,[name]

     ,[column_id]

     ,[system_type_id]

     ,[user_type_id]

     ,[max_length]

     ,[precision]

     ,[scale]  

FROM [master].[sys].[all_columns]

WHEREname='$(name2)';

/*

Ci-dessous la liste des déclarations macros utilisés dans le script *.sql appelé par sqlcmd

-- Exécute une commande dans le shell de commande Windows :

:!! [<command>]

-- Se connecter à une instance SQL Server

:connect server[\instance] [-l timeout] [-U user [-P password]]

-- Editer le cache d'instruction en cours ou le dernier exécuté.

:ed

-- Rediriger les messages d'erreures dans un fichier stderr ou stdout

:error <dest>

-- Quitter sqlcmd immédiatement

:exit

-- Exécuter le cache d'instruction; quitter sans valeur de retour

:exit()

-- -Exécute le cache d'instructions (n ​​fois)

go [<n>]

-- Affichere la liste des commandes

:help

-- afficher le contenu du cache d'instructions

:list

-- Lister les variables du scripting sqlcmd qui ont été définies

:listvar

-- action à faire dans le cas d'erreur du batch ou de la commande sqlcmd

:on error [exit|ignore]

--Envoyer le retour de la requête dans un fichier stderr ou stdout

:out <filename>|stderr|stdout

--Envoyer la sortie de chronométrage dans un fichier, stderr ou stdout

:perftrace <filename>|stderr|stdout

-- Quitter sqlcmd immédiatement

:quit

-- Ajouter le contenu du fichier au cache d'instructions

:r <filename>

-- Initialiser le cache d'instructions

:reset

-- lister les instances SQL Server locales et sur le réseau

:serverlist

-- Retirer une variable de script sqlcmd

:setvar {variable}

-- Définir et initialiser une variable pour un script sqlcmd

:setvar <variable> <value>

*/