none
Insertar datos en una tabla con clave identity con Integration Services

    Question

  • Soy un usuario nuevo de Integration Services, estoy tratando de cargar datos en una tabla a partir de una consulta.

    La duda que me queda es como hacer cuando el destino tiene una clave identity, ya que no puedo asignarle nada a ese campo y me da un error de null value.

    Desde ya muchas gracias por el apoyo.

    Gabriel


    Gabriel Murugosa

    Monday, April 16, 2012 5:01 PM

Answers

  • Hola,

    Al hilo de lo que te comenta Alberto, estamos suponiendo que utilizas un componente OLE DB Destination en modo Fast Load. Es posible que hayas marcado la opción Keep Identity sin mapear esa columna con alguna del flujo de datos y por esto te de error de Null. Para gestionar este tipo de columna (en Fast Load) tienes dos opciones fáciles:

    1. La primera es que no tengas la necesidad de mantener los IDs de origen y permitas a la columna de destino generar sus propios IDs. Para esto la opción Keep Identity debe estar desmarcada

    2. El segundo supuesto que es la columna Identity destino deba registrar los valores de origen (siempre que no existan ya en la tabla) para lo que necesitas marcar la opción Keep Identity. Es el mismo efecto que utilizar la opción SET IDENTITY_INSERT nombre tabla ON|OFF desde TSQL.

    OLEDB Destination - Fast Load - Keep identity

    Para más info http://msdn.microsoft.com/es-es/library/ms141237.aspx

    Si estas usando otro adaptador o este mismo de otro modo, comentanoslo para darte una respuesta más acertada.


    Víctor M. Sánchez García (ES) (BI) Hope this help. Please vote if you find this posting was helpful. if this is an answer to your question, please mark it. http://bifase.blogspot.com | http://twitter.com/atharky

    Thursday, April 19, 2012 8:37 AM
  • Correcto eso lo resolvio, muchas gracias!


    Gabriel Murugosa

    Friday, May 11, 2012 7:43 PM

All replies

  • Hola.

    Tienes una marca en la definición del destino que te permite enviar un valor para el campo identity. Y luego por supuesto puedes no facilitarlo y dejar que el motor se ocupe de rellenarlo, haciendo su función.

    Así que sí puedes asignarle información a ese campo y en caso de que no se la proporciones, nunca irá nulo. Conclusión: verifica que realmente ese campo lleva un identity definido.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/ Sígueme en twitter en http://twitter.com/qwalgrande

    Monday, April 16, 2012 8:44 PM
    Moderator
  • Hola,

    Al hilo de lo que te comenta Alberto, estamos suponiendo que utilizas un componente OLE DB Destination en modo Fast Load. Es posible que hayas marcado la opción Keep Identity sin mapear esa columna con alguna del flujo de datos y por esto te de error de Null. Para gestionar este tipo de columna (en Fast Load) tienes dos opciones fáciles:

    1. La primera es que no tengas la necesidad de mantener los IDs de origen y permitas a la columna de destino generar sus propios IDs. Para esto la opción Keep Identity debe estar desmarcada

    2. El segundo supuesto que es la columna Identity destino deba registrar los valores de origen (siempre que no existan ya en la tabla) para lo que necesitas marcar la opción Keep Identity. Es el mismo efecto que utilizar la opción SET IDENTITY_INSERT nombre tabla ON|OFF desde TSQL.

    OLEDB Destination - Fast Load - Keep identity

    Para más info http://msdn.microsoft.com/es-es/library/ms141237.aspx

    Si estas usando otro adaptador o este mismo de otro modo, comentanoslo para darte una respuesta más acertada.


    Víctor M. Sánchez García (ES) (BI) Hope this help. Please vote if you find this posting was helpful. if this is an answer to your question, please mark it. http://bifase.blogspot.com | http://twitter.com/atharky

    Thursday, April 19, 2012 8:37 AM
  • Correcto eso lo resolvio, muchas gracias!


    Gabriel Murugosa

    Friday, May 11, 2012 7:43 PM