Ver Mensaje Individual
  #6 (permalink)  
Antiguo 27/02/2015, 08:48
PIPEGOS
 
Fecha de Ingreso: febrero-2015
Mensajes: 6
Antigüedad: 9 años, 2 meses
Puntos: 0
Exclamación Respuesta: Importar datos de un txt a una tabla de sqlserver 2008

jajaja ok que pena veo que modificaron el post y se perdió el inicio.
Les explico, necesito subir información por medio de un archivo plano a la base de datos trabajo con sql server 2012, el procedimiento por el cual lo hago es en esencia el siguiente:

ALTER PROCEDURE [dbo].[Cargar_Datos]

@Dire NVARCHAR(MAX),
@EmprId uniqueidentifier

as

BEGIN
DECLARE @query Nvarchar(MAX)

SET @query=N'

INSERT INTO Tabla_Datos
with (KEEPIDENTITY)
(
Campo1,
Campo2
)
SELECT a.* FROM OPENROWSET( BULK '+ CHAR(39) + @Dire + CHAR(39) +',
FORMATFILE = ''C:\ArchivosFormato\Archivo.fmt'') AS a;'

EXEC sp_executesql @query


end


Use "sp_executesql" ya que necesito enviar la ruta donde se encuentra el archivo por medio de un parámetro y como la instrucción "BULK" solo acepta una cadena no puedo incluir el parámetro por que lo tomaría como texto y no lo reconoce como un parámetro, investigando un poco encontré como solución usar la instrucción "sp_executesql" que seria como les muestro en el procedimiento arriba y funciono pero a medias por decirlo así ya que desde la aplicación no sucede nada por que no se carga la información del archivo plano.

Hice un tuning con la herramienta sql server profiler y efectivamente se estaba llamando al procedimiento y el envió de parámetros estaba bien por lo que decidí hacer debug al procedimiento paso a paso con F11 y encontre que cuando se ejecutar la linea que lanza esta instrucción "EXEC sp_executesql @query" se abre una nueva pestaña con el nombre "Dynamic-Transact SQL" y arroja el siguiente error "Object reference not set to an instance of object" si uno le da aceptar es como entrar en un bucle por que presiono nuevamente F11 y arroja de nuevo el error, entonces lo que hago es o cierro o cambio esta ventana y vuelvo a donde quedo la ejecución del procedimiento que seria en la linea "EXEC sp_executesql @query" vuelvo a presionar F11 se ejecuta bien la instrucción y se carga la información a la tabla desde el archivo plano, por esto digo que funciona pero cuando todo se hace desde el aplicativo supongo que llega al error y frena todo.

[URL=http://s296.photobucket.com/user/pipegos/media/Captura_zpse5k6cc2w.png.html][IMG]http://i296.photobucket.com/albums/mm180/pipegos/Captura_zpse5k6cc2w.png[/IMG][/URL]

En mi primer post puse un link donde tratan el tema pero la solución que dan no la puedo usar por que no puedo modificar el archivo al que allí se refieren.

Les agradezco si me pueden colaborar