¿se puede crear un fichero desde un stored procedure?

27/06/2007 - 12:45 por Victor | Informe spam
Hola.

Necesito generar ficheros (cada uno con un nombre diferente), y cuyo
contenido es superior a 8000 caracteres.

Con el xp_cmdshell lo he logrado, pero con datos más pequeños de 255.
No se si el cmd tiene comandos para abrir, insertar y cerrar ficheros (así
lo solucionaría).

¿Álguna forma?

Preguntas similare

Leer las respuestas

#1 Juan Diego Bueno
27/06/2007 - 13:30 | Informe spam
Ahora a bote pronto, mediante SQL tal cual no te se decir, pero si usas SQL
Server 2005, puedes usar la integración CLR para ello

En www.moondance.tk en el apartado Integración CLR en SQL Server, tienes un
pequeño ejemplo de ello

Saludos

"Victor" escribió en el mensaje
news:%23a%
Hola.

Necesito generar ficheros (cada uno con un nombre diferente), y cuyo
contenido es superior a 8000 caracteres.

Con el xp_cmdshell lo he logrado, pero con datos más pequeños de 255.
No se si el cmd tiene comandos para abrir, insertar y cerrar ficheros (así
lo solucionaría).

¿Álguna forma?


Respuesta Responder a este mensaje
#2 Victor
27/06/2007 - 15:23 | Informe spam
Gracias, pero uso el SQL Server 2000.

"Juan Diego Bueno" escribió en el mensaje
news:
Ahora a bote pronto, mediante SQL tal cual no te se decir, pero si usas


SQL
Server 2005, puedes usar la integración CLR para ello

En www.moondance.tk en el apartado Integración CLR en SQL Server, tienes


un
pequeño ejemplo de ello

Saludos

"Victor" escribió en el mensaje
news:%23a%
> Hola.
>
> Necesito generar ficheros (cada uno con un nombre diferente), y cuyo
> contenido es superior a 8000 caracteres.
>
> Con el xp_cmdshell lo he logrado, pero con datos más pequeños de 255.
> No se si el cmd tiene comandos para abrir, insertar y cerrar ficheros


(así
> lo solucionaría).
>
> ¿Álguna forma?
>
>


Respuesta Responder a este mensaje
#3 Maxi
27/06/2007 - 16:42 | Informe spam
Hola, no se que tipo de ficheros necesitas hacer, pero SQL dispone de
paquetes DTS

www.sqldts.com



-
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
Email:
"Victor" escribió en el mensaje
news:%23a%
Hola.

Necesito generar ficheros (cada uno con un nombre diferente), y cuyo
contenido es superior a 8000 caracteres.

Con el xp_cmdshell lo he logrado, pero con datos más pequeños de 255.
No se si el cmd tiene comandos para abrir, insertar y cerrar ficheros (así
lo solucionaría).

¿Álguna forma?


Respuesta Responder a este mensaje
#4 Gustavo Larriera (MVP)
27/06/2007 - 21:36 | Informe spam
Cuando sabemos usar un martillo todos los problemas tienen forma de clavo :-)

T-SQL es un lenguaje de manipulacion de datos, no es un lenguaje de
proposito general como para andar manejando archivos (si bien con extremnado
esfuerzo se podria hacer).

Intenta abordar el problema con programacion en paquetes DTS, tal vez un
ActiveX Script Task te resuelva comodamente el problema.

Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/p...o.Larriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Victor" wrote:

Hola.

Necesito generar ficheros (cada uno con un nombre diferente), y cuyo
contenido es superior a 8000 caracteres.

Con el xp_cmdshell lo he logrado, pero con datos más pequeños de 255.
No se si el cmd tiene comandos para abrir, insertar y cerrar ficheros (así
lo solucionaría).

¿Álguna forma?



Respuesta Responder a este mensaje
#5 Jesús López
28/06/2007 - 18:37 | Informe spam
Como poderse, se puede escribir en un archivo de texto desde un
procedimiento almacenado de SQL Server 2000. Otra cuestión es si se debería
o no. Yo diría que en la mayoría de los casos no. Eso lo pueden hacer
aplicaciones externas.

Aquí tienes un ejemplo de un procedimiento almacenado que añade una línea de
texto a un archivo existente, si el archivo no existe lo crea. Se basa en
los procedimientos almacenados de automatización OLE y utiliza el componente
Scripting.FileSystemObject

http://msdn2.microsoft.com/en-us/li...90501.aspx


CREATE PROCEDURE AppendTextLineToFile
@FileName varchar(240),
@TextLine varchar(8000)
AS
DECLARE @obj int
DECLARE @fs int
DECLARE @stream int
DECLARE @hresult int
EXEC @hresult = sp_OACreate 'Scripting.FileSystemObject', @fs OUT
SET @obj = @fs
IF @hresult <> 0 GOTO Errors
EXEC @hresult = sp_OAMethod @fs, 'OpenTextFile', @stream OUT, @FileName, 8,
1
IF @hresult <> 0 GOTO Errors
SET @obj = @stream
EXEC @hresult = sp_OAMethod @stream, 'WriteLine', NULL, @TextLine
IF @hresult <> 0 GOTO Errors
EXEC @hresult = sp_OAMethod @stream, 'Close'
IF @hresult <> 0 GOTO Errors

Destroy:
IF @stream IS NOT NULL EXEC sp_OADestroy @stream
IF @fs IS NOT NULL EXEC sp_OADestroy @fs
RETURN
Errors:
IF @obj IS NOT NULL EXEC sp_OAGetErrorInfo @obj
RAISERROR('Error escribiendo en archivo', 16, -1)
GOTO Destroy
GO

EXEC AppendTextLineToFile 'C:\Test.txt', 'Linea escrita desde SQL Server
2000'


Saludos:

Jesús López.
Solid Quality Mentors
www.solidq.com

"Victor" escribió en el mensaje
news:
Gracias, pero uso el SQL Server 2000.

"Juan Diego Bueno" escribió en el mensaje
news:
Ahora a bote pronto, mediante SQL tal cual no te se decir, pero si usas


SQL
Server 2005, puedes usar la integración CLR para ello

En www.moondance.tk en el apartado Integración CLR en SQL Server, tienes


un
pequeño ejemplo de ello

Saludos

"Victor" escribió en el mensaje
news:%23a%
> Hola.
>
> Necesito generar ficheros (cada uno con un nombre diferente), y cuyo
> contenido es superior a 8000 caracteres.
>
> Con el xp_cmdshell lo he logrado, pero con datos más pequeños de 255.
> No se si el cmd tiene comandos para abrir, insertar y cerrar ficheros


(así
> lo solucionaría).
>
> ¿Álguna forma?
>
>






Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida