Escribir fichero de texto desde SQL Server

Esta vez ha tocado ir escribiendo un log en un procedimiento almacenado por petición del cliente, asi que nada, la forma basica de escribir un fichero:

exec master..xp_cmdshell 'echo texto de inicio de log> c:\logs\fichero.txt'
exec master..xp_cmdshell 'echo texto concatenado al fichero >> c:\logs\fichero.txt'

peeeeero, para poder hacer esto, hay que habilitar el uso del xp_cmdshell que por defecto viene desactivado

EXEC sp_configure 'show advanced options', 1
RECONFIGURE
EXEC sp_configure 'xp_cmdshell', 1
RECONFIGURE

y logicamente, que la carpeta donde vayamos a escribir el log, debe tener permiso de escritura

Dejar un comentario?

7 Comentarios.

  1. Excelente hermano simple y efectivo! 😀

  2. Buen día, yo voy a hacer esto
    exec xp_cmdshell ‘bcp «SELECT idPuesto, idPosicion FROM ITXV5NOMINA.dbo.nomEmpleadoNomina where idpersona = 10041» queryout «C:\Incidencias\25031501.xls» -c -U «sa» -P «jmedina» -S «JMEDINA-PC»‘

    Pero si quiero escribir sobre ese mismo al agregar «>>» me marca «Access is denied.» que puedo hacer??

    • Si el fichero ya existe comprueba que permisos tiene, y si no existe comprueba los de la carpeta donde quieres generarlo.

  3. Amigo una pregunta es posible que por codigo SQL guardar ese archivo TXT en algun escritorio especifico sin que el tenga que acceder al Servidor?

    • Mediante una tarea programada podrías almacenar el fichero donde quisieras, siempre que el servidor de SQL tenga acceso a dicha carpeta

  4. JUAN SOLARES

    Gracias por la informacion, tengo una duda.
    Hay alguna forma de hacer esto:
    exec master..xp_cmdshell ‘echo ‘+@informacion+’ > c:\logs\fichero.txt’

    • Ahora no puedo probarlo pero lo que haría sería cargar la cadena en una variable para poder depurarlo antes de ejecutarlo:

      declare @sql varchar(5000)
      set @sql = ‘master..xp_cmdshell »’ + @informacion + ‘ > c:\logs\fichero.txt»’
      exec(@sql)

Deje un comentario


NOTA - Puede usar estosHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.