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
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
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.