SQL: Écrire dans un fichier depuis SQL Server Management Studio

image_pdfimage_print

Pour écrire dans un fichier de sortie depuis SQL Server Management Studio, rien de plus simple!
On peux facilement faire appel à la fonction xp_cmdshell.
Cependant elle est pour des raisons de sécurité désactivée par défaut.
Je vous recommande de jeter un œil sur la documentation Microsoft avant de l’utiliser.

On commence par l’activer :

Use Master
GO

EXEC master.dbo.sp_configure 'xp_cmdshell', 1
RECONFIGURE WITH OVERRIDE
GO

EXEC master.dbo.sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE
GO

Il est ensuite possible d’y faire appel.
Voici un exemple de script :

DECLARE @cmd sysname, @var sysname
SET @var = 'Hello world'
SET @cmd = 'echo ' + @var + ' > var_out.txt'
EXEC master..xp_cmdshell @cmd
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
EXEC sp_configure 'xp_cmdshell', 1
RECONFIGURE

exec master..xp_cmdshell 'echo hello > c:\file.txt'
exec master..xp_cmdshell 'echo appended data >> c:\file.txt'
exec master..xp_cmdshell 'echo more data >> c:\file.txt'

N’oubliez pas de la désactiver une fois terminé.

Use Master
GO

EXEC master.dbo.sp_configure 'xp_cmdshell', 0
RECONFIGURE WITH OVERRIDE
GO

EXEC master.dbo.sp_configure 'show advanced options', 0
RECONFIGURE WITH OVERRIDE
GO

2 Comments

  1. Baptiste

    Bonjour,
    Quand je lance ce script, la fenêtre résultat me donne une colonne output avec deux lignes : “Accès refusé” et “NULL” (autant de fois que ‘exec master..xp_cmdshell’ est présent dans le script.
    Je suis en SQL Server 2017 et j’exécute le script sur la base master. Le problème est le même sur une autre base.
    Merci d’avance,
    Baptiste

    • GFinzi

      Bonjour et désolé pour le temps de réponse.
      Je n’ai pas de certitude sur le sujet, mais à priori il s’agit d’un problème de droit.
      Votre utilisateur ne peux pas accéder à cette commande.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.