[MSSQL] Quelques notes

Quelques notes concernant deux commandes qui m’ont été bien utiles en travaillant avec Microsoft SQL Server.

Exécuter une liste de script à partir d’un script principal

Soit l’arborescence de fichiers suivante pour un dossier livraison-sql donné :

  • livraison-sql/main.sql
  • livraison-sql/scripts/script1.sql
  • livraison-sql/scripts/script2.sql

Soit un fichier main.sql de la forme :

USE databaseName;
PRINT 'Exécution des scritps SQL'

PRINT 'Exécution: script1.sql'
:r .\scripts\script1.sql

PRINT 'Exécution: script2.sql'
:r .\scripts\script2.sql

Voici la commande à utiliser pour réaliser les opérations contenues dans notre main.sql, à savoir, l’exécution des scripts du dossier scripts :

sqlcmd -S "<nom de domaine>\<instance>" -U <utilisateur> -C -i main.sql -P<mot de passe>

Voir aussi la documentation Microsoft pour sqlcmd.

Restauration des utilisateurs bdd avec les logins

Après la restauration d’une sauvegarde de base de donnée, il peut être nécessaire de refaire la liaison entre les utilisateurs de la base de données et les identifiants mssql. On utilisera alors la commande suivante pour un utilisateur donné :

EXEC sp_change_users_login 'Auto_Fix', '<user>';