[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>
*/