none
Importación desde ACCESS a SQL Server pierde la Identidad RRS feed

  • Pregunta

  • Hola,

    Estoy importando una tabla de ACCESS a SQL SERVER.

    El campo en ACCESS es Autonumérico
    EL mismo campo SQL SERVER lo importa como INT pero NO especificani identidad ni incremento de indetidad.

    Necesito que sea Identidad SI
    Incremento de Identidad 1
    Inicialización de Identidad 1

    Pero no hay forma de hacerlo porque me da el siguiente mensaje cuando intento cambiar las propiedades del campo

    Muchas gracias por la ayuda! 

    domingo, 26 de junio de 2016 16:21

Respuestas

  • Hola Jorge,  si el error te marca en el Sql management,  deberías intentar hacer esto:

    Para cambiar la opción impedir guardar cambios que requieren la creación de la tabla, siga estos pasos:

    1. Abra SQL Server Management Studio (SSMS).
    2. En el menú Herramientas, haga clic en Opciones.
    3. En el panel de navegación de la ventana de Opciones, haga clic en los diseñadores.
    4. Seleccione o desactive la casilla de verificación impedir guardar cambios que requieren la recreación de la tabla y, a continuación, haga clic en Aceptar.

    NotaSi deshabilita esta opción, no se le advertirá cuando guarda la tabla los cambios que ha realizado han cambiado la estructura de metadatos de la tabla. En este caso, puede producirse pérdida de datos al guardar la tabla.

    Riesgo de desactivar la opción "Impedir guardar cambios que requieran volver a crear tablas"

    Aunque desactivar esta opción puede ayudarle a evitar volver a crear una tabla, también puede conducir a que los cambios se pierdan. 

    Para determinar si está habilitada la característica de seguimiento de cambios para una tabla, siga estos pasos:

    1. En SQL Server Management Studio, busque la tabla en El Explorador de objetos.
    2. Haga clic con el botón secundario en la tabla y, a continuación, haga clic enPropiedades.
    3. En el cuadro de diálogo Propiedades de la tabla, haga clic en Change Tracking.

    Si el valor del elemento de Seguimiento de cambios es True, esta opción está habilitada para la tabla. Si el valor es False, esta opción está deshabilitada.

    Cuando está habilitada la característica Change Tracking, utilice instrucciones Transact-SQL para cambiar la estructura de metadatos de la tabla.

    Espero te sea de ayuda 


    Javier

    • Marcado como respuesta jorge1.6.4.4 domingo, 26 de junio de 2016 18:49
    domingo, 26 de junio de 2016 16:32
  • jorge1.6.4.4,

    //Estoy importando una tabla de ACCESS a SQL SERVER.

    ¿Importas sólo datos? o ¿tienes algún procedimiento de migración donde se incluye previamente el script de diseño de la tabla y luego la carga de datos?

    Lo menciono porque en caso la tabla no exista, crear la misma con la propiedad IDENTITY() no es complicado:

    ALTER TABLE dbo.tborders
    (
            ID int IDENTITY(1,1) PRIMARY KEY CLUSTERED,
            ...
    )

    Si la tabla ya existe entonces una opción es la que te describe Javier.

    Por otro lado, cuando migras datos debes de cuidar la integridad y consistencia de los mismos: la tabla en Ms-Access implementa una columna auto-numérica cuyos valores deben ser transferidos a la nueva tabla en SQL Server, teniendo la propiedad IDENTITY() "habilitada" no te permitirá insertar explicitamente los valores para la columna. Te recomiendo que antes de la migración de datos "deshabilites" la propiedad IDENTITY() para permitir insertar valores de forma explicita sobre dicha columna:

    SET IDENTITY_INSERT ON;
    /*Insertar valores a la tabla*/
    SET IDENTITY_INSERT OFF;


    • Marcado como respuesta jorge1.6.4.4 domingo, 26 de junio de 2016 18:49
    domingo, 26 de junio de 2016 17:25

Todas las respuestas

  • Hola Jorge,  si el error te marca en el Sql management,  deberías intentar hacer esto:

    Para cambiar la opción impedir guardar cambios que requieren la creación de la tabla, siga estos pasos:

    1. Abra SQL Server Management Studio (SSMS).
    2. En el menú Herramientas, haga clic en Opciones.
    3. En el panel de navegación de la ventana de Opciones, haga clic en los diseñadores.
    4. Seleccione o desactive la casilla de verificación impedir guardar cambios que requieren la recreación de la tabla y, a continuación, haga clic en Aceptar.

    NotaSi deshabilita esta opción, no se le advertirá cuando guarda la tabla los cambios que ha realizado han cambiado la estructura de metadatos de la tabla. En este caso, puede producirse pérdida de datos al guardar la tabla.

    Riesgo de desactivar la opción "Impedir guardar cambios que requieran volver a crear tablas"

    Aunque desactivar esta opción puede ayudarle a evitar volver a crear una tabla, también puede conducir a que los cambios se pierdan. 

    Para determinar si está habilitada la característica de seguimiento de cambios para una tabla, siga estos pasos:

    1. En SQL Server Management Studio, busque la tabla en El Explorador de objetos.
    2. Haga clic con el botón secundario en la tabla y, a continuación, haga clic enPropiedades.
    3. En el cuadro de diálogo Propiedades de la tabla, haga clic en Change Tracking.

    Si el valor del elemento de Seguimiento de cambios es True, esta opción está habilitada para la tabla. Si el valor es False, esta opción está deshabilitada.

    Cuando está habilitada la característica Change Tracking, utilice instrucciones Transact-SQL para cambiar la estructura de metadatos de la tabla.

    Espero te sea de ayuda 


    Javier

    • Marcado como respuesta jorge1.6.4.4 domingo, 26 de junio de 2016 18:49
    domingo, 26 de junio de 2016 16:32
  • jorge1.6.4.4,

    //Estoy importando una tabla de ACCESS a SQL SERVER.

    ¿Importas sólo datos? o ¿tienes algún procedimiento de migración donde se incluye previamente el script de diseño de la tabla y luego la carga de datos?

    Lo menciono porque en caso la tabla no exista, crear la misma con la propiedad IDENTITY() no es complicado:

    ALTER TABLE dbo.tborders
    (
            ID int IDENTITY(1,1) PRIMARY KEY CLUSTERED,
            ...
    )

    Si la tabla ya existe entonces una opción es la que te describe Javier.

    Por otro lado, cuando migras datos debes de cuidar la integridad y consistencia de los mismos: la tabla en Ms-Access implementa una columna auto-numérica cuyos valores deben ser transferidos a la nueva tabla en SQL Server, teniendo la propiedad IDENTITY() "habilitada" no te permitirá insertar explicitamente los valores para la columna. Te recomiendo que antes de la migración de datos "deshabilites" la propiedad IDENTITY() para permitir insertar valores de forma explicita sobre dicha columna:

    SET IDENTITY_INSERT ON;
    /*Insertar valores a la tabla*/
    SET IDENTITY_INSERT OFF;


    • Marcado como respuesta jorge1.6.4.4 domingo, 26 de junio de 2016 18:49
    domingo, 26 de junio de 2016 17:25