2012-08-28 16 views
8

Estoy tratando de exportar datos de mi producción DB a mi desarrollo DB pero yo estoy recibiendo este error:SQL Server 2008 R2 exportación de datos Problemas

Messages Error 0xc0202049: Data Flow Task 1: Failure inserting into the read-only column "id". (SQL Server Import and Export Wizard)

¿Hay una manera de comprobar qué columna es que debido a que ¿Tienen 20 tablas que todas usan el nombre de la columna id o al menos obtienen un mejor informe de errores?

+0

Supongo que tiene más que ver con los permisos en cualquiera de las tablas de la base de datos de desarrollo que con cualquier tabla de las 20 en las que está intentando importar datos. ¿Hay alguna restricción en la identificación de usuario que está usando en la base de datos de desarrollo? –

+0

no, soy el administrador, así que mi nombre de usuario tiene acceso para completar cualquier tarea – Geo

Respuesta

2

Todo lo que tenía que hacer era:

  • Haga clic derecho en la columna (en este caso 'ID')
  • Seleccione Modificar
  • Dentro de las Propiedades de la columna desplazarse hacia abajo hasta que vea Identidad Especificación
  • Expanda la vista y seleccione NO en el menú desplegable.

Si alguien sabe de una manera diferente (más rápido) de hacer esto por favor, comparta

5

Si la columna ID es una columna de identidad, es probable que esté configurada para generarse automáticamente cuando se inserta una fila y no se puede escribir directamente en ella.

Para preservar la vinculación del entorno de producción de la prueba, utilice:

SET Identity_Insert <TableName> ON 

para que pueda escribir los valores de identidad.

+0

y todas mis columnas de ID generan automáticamente sus valores. Tengo que ejecutar tu comando 20 veces, supongo. (Una vez para cada tabla) – Geo

+0

Si tus ID son globales, solo tendrías que ejecutarlo para la tabla que es responsable de generar los valores. Las otras tablas probablemente no se especifiquen como columnas de IDENTIDAD. –

+0

bien en su ejemplo tiene . Lo intenté con una de mis tablas, pero no funcionó. Este es el error: 'Tabla' usuarios 'no tiene la propiedad de identidad. No se puede realizar la operación SET. – Geo

0

Me parece que podría estar intentando insertar valores en una columna que se ha declarado como un campo de IDENTIDAD.

0

Bueno, la respuesta es un poco tarde, pero he publicado todos modos en aras de proporcionar a la comunidad.

Supongo que está intentando copiar tablas (no datos parciales). Mi respuesta se basa en esta suposición.

  1. Conéctese a la fuente db mediante el Explorador de objetos en SSMS.
  2. Haga clic con el botón secundario en el archivo db que desea que copie sus tablas.
  3. Ir a 'Tareas' -> 'Exportar'.
  4. Elija su servidor de origen y de destino, y si no desea que se ejecuten secuencias de comandos adicionales antes de las manos, simplemente presione Siguiente ('Copiar datos desde una o más tablas o vistas'). Ahora puede seleccionar las tablas que desea copiar al destino.

Seleccione las tablas que desea copiar por completo a su destino. Y haga clic en 'editar mapeos'. Aquí puedes 'habilitar el inserto de identidad'. También tendrá otras opciones, así que revise la pantalla antes de presionar OK.

Si no utiliza una edición expresa de SSMS aquí, puede crear un paquete SSIS para crear trabajos y automatizar este proceso en el futuro. Puede verificar 'ejecutar inmediatamente' y seguir la pantalla acerca de cómo funciona con todas las advertencias y errores. Con suerte no obtendrás ninguno. ¡Buena suerte!

Tested with: 
(
    Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (Intel X86) 
    Jun 17 2011 00:57:23 
    Copyright (c) Microsoft Corporation 
    Enterprise Edition on Windows NT 5.2 <X86> (Build 3790: Service Pack 2) 
) 
24

Simplemente haga clic en Edit mappings cuando se elige tablas para importar desde y hacia. y marque en la casilla Enable identity insert. Y deberías hacer eso para cada mesa elegida. Entonces puedes completar tu importación. Me fue ayudado en la misma situación.

Cuestiones relacionadas