none
Error al utilizar BULK INSERT Msg 50000 RRS feed

  • Pregunta

  • Buen día,

    Acudo a este foro nuevamente para solicitar su apoyo por un error que se me presento, he estado buscando en la red y no encuentro una solución para esto, les agradecere mucho me a

    yuden a encontrar una solucion.

    Tengo un archivo .txt el cual tengo que subir a una base de datos he estado utilizando BULK INSERT y no habia tenido problemas hasta que a la tabla se le agrego el campo ClaveVenta nvarchar(30) al ejecutar el BULK INSERT me manda el siguiente error:

    Msg 50000, Level 16, State 1, Line 68

    Cannot fetch a row from OLE DB provider "BULK" for linked server "(null)".

    Les pongo el script del BULK INSERT que habia venido utilizando que no habia generado problemas hasta que se agrego el campo ClaveVenta.

    BULK 
    INSERT DTS_Repositorio.dbo.Catalogo_Tiempos_Movimientos
    FROM 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\Archivos\Cuernavaca\20120312\Insert_Cuernavaca_Catalogo_Tiempos_Movimientos.txt'
    WITH
     ( FIELDTERMINATOR = '|'
     ,BATCHSIZE = 1000  )


    la tabla tiene los siguientes campos:

    idMovimiento int -->>PK

    Movimiento varchar(50)

    Fecha datetime

    idCliente int

    idEmpleado int

    idInventario int

    idRuta int

    idPlaza int

    idCalendario int --->> FK

    ClaveVenta nvarchar(30) ----->>>> (Campo agregado)

    y el archivo .txt con la siguiente estructura de datos

    291222|LOG IN|Feb  8 2012  8:55AM|100000|27|11|1|3|985|NULL                                                                                                                                                                 
    291223|LOG OUT|Feb  8 2012  6:46PM|100000|27|11|1|3|985|NULL                                                                                                                                                                
    291224|LOG IN|Feb  8 2012  6:46PM|100000|11|11|12|3|985|NULL                                                                                                                                                                
    291225|STORE SCAN|Feb  8 2012 12:26PM|1127|27|11|1|3|985|2012020811271                                                                                                                                                      
    291226|NO ORDER|Feb  8 2012 12:29PM|1127|27|11|1|3|985|2012020811271                                                                                                                                                        
    291227|STORE SCAN|Feb  8 2012 12:32PM|1130|27|11|1|3|985|2012020811301                                                                                                                                                      
    291228|VENTA|Feb  8 2012 12:33PM|1130|27|11|1|3|985|2012020811301                                                                                                                                                           
    291229|VENTA|Feb  8 2012 12:34PM|1130|27|11|1|3|985|2012020811301                                                                                                                                                           
    291230|VENTA|Feb  8 2012 12:34PM|1130|27|11|1|3|985|2012020811301                                                                                                                                                           
    291231|ORDER CLOSED|Feb  8 2012 12:41PM|1130|27|11|1|3|985|2012020811301                                                                                                                                                    
    291232|STORE SCAN|Feb  8 2012 12:50PM|1134|27|11|1|3|985|2012020811341 

    Algunos registros no van a llevar información en ese campo por lo que se le puso NULL y el campo permite NULL.

    Si quito el campo de la tabla y lo quito tambien del archivo la información se carga sin problemas, estoy utlizando sql server 2008.

    Espero me pudean ayudar, se los agradecere mucho.

    Saludos...

    martes, 13 de marzo de 2012 18:42

Respuestas

  • Buen día, una disculpa por mi tardanza en contestar.

    Les comento que ya resolvi mi problema, el detalle estaba en el campo tipo datetime algo raro porque antes de agregar el campo nuevo estaba funcionando la importacion de datos correctamente, de tanto estar moviendole al tipo de datos de los campos haciendo conversiones al momento de generar el archivo .txt se dio que al ponerle el formato aaaa-mm-dd 00:00:00 se importo sin ningun problema la informacion.

    De cualquier forma muchas gracias a todos por el apoyo brindado y disculpen las latas que doy, jejejejejeje.

    Saludos...

    • Marcado como respuesta Sailorotelo jueves, 29 de marzo de 2012 21:06
    jueves, 29 de marzo de 2012 21:06

Todas las respuestas

  • El problema radica en los valores NULL que se presentan en tu BCP, para que no tengas problemas al respecto adiciona despues de tu FIELDTERMINAR la palabra <<KEEPNULLS>>, aqui el cambio en tu BCP:

    BULK 
    INSERT DTS_Repositorio.dbo.Catalogo_Tiempos_Movimientos
    FROM 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\Archivos\Cuernavaca\20120312\Insert_Cuernavaca_Catalogo_Tiempos_Movimientos.txt'
    WITH
     ( FIELDTERMINATOR = '|',
       KEEPNULLS);

    En este enlace se comenta sobre este tema :

    http://msdn.microsoft.com/en-us/library/ms187887.aspx

    Pruebalo y nos comentas como te fue.


    "How many years can some people exist before they're allowed to be free" Bob Dylan Email: info@geohernandez.com Blog: geeks.ms/blogs/ghernandez

    martes, 13 de marzo de 2012 18:51
  • Hola Geovanny,  muchas gracias por responder, ya hice pruebas poniendo KEEPNULLS y sigue mandandome el mismo error.

    BULK

    INSERT DTS_Repositorio.dbo.Catalogo_Tiempos_Movimientos

    FROM 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\Archivos\Cuernavaca\20120312\Insert_Cuernavaca_Catalogo_Tiempos_Movimientos.txt'

    WITH

    ( FIELDTERMINATOR = '|'

    , KEEPNULLS , BATCHSIZE = 1000 )

    Msg 50000, Level 16, State 1, Line 68
    Cannot fetch a row from OLE DB provider "BULK" for linked server "(null)".

    Saludos...

    martes, 13 de marzo de 2012 19:19
  • Revisando al parecer lo que reportas es oficialmente un bug de SSIS, algunos han establecido el timeout a 0, pero igual en este enlace presentan un caso como el tuyo:

    http://social.msdn.microsoft.com/forums/en-US/sqlintegrationservices/thread/d9933b0f-9c49-4d02-8ee3-a8d9ca8ff080/

    En este enlace Microsoft da soporte oficial al bug:

    http://support.microsoft.com/kb/937545

    Revisalos y nos confirmas como te fue.


    "How many years can some people exist before they're allowed to be free" Bob Dylan Email: info@geohernandez.com Blog: geeks.ms/blogs/ghernandez

    martes, 13 de marzo de 2012 19:36
  • Hola Geovanny, ya revise el material que me pasaste, pero no entiendo la parte de establecer el timeout a 0 eso en que parte se hace?, espero me puedes apoyar ya que sigo con el mismo error apesar de que ya considere muchos cambios como en lugar de dejarle el valor NULL a los registros queno van a llevar dato en el campo lo estoy reemplazando por un 0 y me sigue generando el error. tambien modifique el script del bulk insert de la siguiente forma y sigo con el error.

    BULK 
    INSERT DTS_Repositorio.dbo.Catalogo_Tiempos_Movimientos
    FROM 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\Archivos\Cuernavaca\20120313\Insert_Cuernavaca_Catalogo_Tiempos_Movimientos.txt'
    WITH
     ( DATAFILETYPE = 'widenative'
        , FIELDTERMINATOR = '|'
        , KEEPNULLS
        , BATCHSIZE = 1000  )
    Espero me puedas apoyar, te lo agradecere mucho.

    Saludos...

    miércoles, 14 de marzo de 2012 17:44
  • Mira, en el enlace:

    http://support.microsoft.com/kb/937545

    Especifican la necesidad de descargar actualizaciones que solventan esa falla, te sugiero revisarlo y descargar el SP correspondiente a tu versión, en particular esa opcion de timeout a 0 lo mencionaron en el primer enlace, en particular yo no lo probe, pero te sugiero aplicar las actualizaciones.

    Prueba esta opcion del descargar el ultimo Service Pack  y nos comentas como te fue.


    "How many years can some people exist before they're allowed to be free" Bob Dylan Email: info@geohernandez.com Blog: geeks.ms/blogs/ghernandez

    miércoles, 14 de marzo de 2012 18:01
  • Ya revise el enlace pero es para sql server 2005 y yo tengo sql server 2008 R2 express edition with Advanced Services y lo aplicaria tambien  para la version sql server 2008 R2 standard Edition y no le entiendo muy bien a la pagina porque lo unico que viene para descargar es una revision.

    Me puedes orientar un poco mas, te lo agradecere mucho y disculpa la lata.

    Saludos...

    miércoles, 14 de marzo de 2012 18:38
  • No hay problema, para el caso de SQL Server 2008 R2 Estandar Edition, en este enlace te indican como descargar el ultimo Service Pack:

    http://support.microsoft.com/kb/2527041/es

    Para la versión express:

    http://www.microsoft.com/downloads/es-es/details.aspx?FamilyID=ff38db3d-b0fb-4dad-bcd4-e9a4c509b017

    Cualquier duda con gusto te apoyamos.


    "How many years can some people exist before they're allowed to be free" Bob Dylan Email: info@geohernandez.com Blog: geeks.ms/blogs/ghernandez

    miércoles, 14 de marzo de 2012 18:54
  • Hola buen día, sigo sin poder resolver el error, alguna otra sugerencia???

    Se los agradecere mucho.

    Saludos...

    viernes, 16 de marzo de 2012 18:29
  • Hazme un favor para que te ayude. Me lo puedes generar el script que crea la tabla ? (en la tabla presiona script as Create para que genere el codigo de la tabla)

    Una duda, si o si quieres usar el bulk insert ?. Yo normalmente trabajo con el import export wizard que viene al presionar el botón derecho sobre la base de datos en el SQL Server Management Studio.


    MVP MCT MCTS Daniel Calbimonte

    http://elpaladintecnologico.blogspot.com

    miércoles, 21 de marzo de 2012 13:15
  • Buen día, una disculpa por mi tardanza en contestar.

    Les comento que ya resolvi mi problema, el detalle estaba en el campo tipo datetime algo raro porque antes de agregar el campo nuevo estaba funcionando la importacion de datos correctamente, de tanto estar moviendole al tipo de datos de los campos haciendo conversiones al momento de generar el archivo .txt se dio que al ponerle el formato aaaa-mm-dd 00:00:00 se importo sin ningun problema la informacion.

    De cualquier forma muchas gracias a todos por el apoyo brindado y disculpen las latas que doy, jejejejejeje.

    Saludos...

    • Marcado como respuesta Sailorotelo jueves, 29 de marzo de 2012 21:06
    jueves, 29 de marzo de 2012 21:06