Compartir a través de


Solución de problemas de generación de datos

Al trabajar con planes de generación de datos pueden surgir los problemas siguientes:

  • Se produce un error en la generación de datos cuando se infringen restricciones CHECK

  • No es posible asignar el generador de datos Expresión regular a columnas que tienen un tipo definido por el usuario

  • No es posible generar datos para tablas que tienen desencadenadores de eliminación

  • Problemas con los generadores enlazados a datos

  • No se pueden generar datos para las columnas SPARSE

Se produce un error en la generación de datos cuando se infringen restricciones CHECK

Al generar datos para una columna que tiene una restricción CHECK, se produce un error en la operación si se generan datos que infringen la restricción. Puede usar la ventana Vista previa de generación de datos para ver si los datos infringen la restricción antes de ejecutar el plan. Para obtener más información, vea Cómo: Mostrar un plan de generación de datos.

Para solucionar este problema debe usar uno de los métodos siguientes:

No es posible asignar el generador de datos Expresión regular a columnas que tienen un tipo definido por el usuario y restricciones UNIQUE

Al intentar asignar un generador de datos a una columna que tiene una restricción UNIQUE, la lista de generadores disponibles sólo muestra los generadores que pueden generar valores únicos. Como no hay la seguridad de que el generador Expresión regular genere valores únicos, no se puede usar para rellenar una columna que tiene un tipo definido por el usuario y una restricción UNIQUE.

Para generar datos para una columna que tiene un tipo definido por el usuario con una restricción UNIQUE, debe usar el generador enlazado a datos o un generador de datos personalizado. Para obtener más información, vea Generador enlazado a datos y Generar datos de pruebas especializados con un generador de datos personalizado.

No es posible generar datos para tablas que tienen desencadenadores de eliminación

Algunas tablas tienen desencadenadores que evitan la eliminación de filas. Si intenta eliminar filas en una tabla de este tipo, el desencadenador revertirá la operación de eliminación. Para este tipo de tabla o para una tabla que haga referencia a este tipo de tabla no se pueden generar datos de la manera habitual. Por ejemplo, no puede generar de la manera habitual datos para la tabla Employee de la base de datos AdventureWorks.

Para generar datos para este tipo de tabla, use uno de los métodos siguientes:

  • Deshabilite o elimine el desencadenador, ejecute el plan de generación de datos y habilite o agregue de nuevo el desencadenador.

  • Ejecute el plan de generación de datos. Cuando se le pregunte si desea borrar el contenido de las tablas antes de insertar filas nuevas, haga clic en No. Los nuevos datos que genere se agregarán a los datos existentes en la tabla, de forma que el desencadenador de eliminación no se active. Este método puede provocar resultados imprevisibles y podrían producirse errores si alguna de las columnas tiene una restricción UNIQUE.

Problemas con los generadores enlazados a datos

Si se produce un error en la generación de los datos de una o varias columnas para las que ha especificado un generador enlazado a datos, en la columna Salida del generador de la ventana Detalles de columna se muestra "Sin salida" o "Sin salida obligatoria". En las secciones siguientes se describen las razones de este tipo de error de generación de datos.

Sin resultado

Si en la columna Salida del generador se muestra "Sin salida", probablemente la instrucción SELECT que especificó en la propiedad Select Query sea incorrecta. Como la instrucción SELECT puede ser difícil de ver en la ventana Propiedades, tal vez desee copiarla y pegarla en el editor Transact-SQL para comprobar si es correcta.

Sin resultado obligatorio

Si en la columna Salida del generador se muestra "Sin salida obligatoria", el tipo de datos que la instrucción SELECT devuelve no se puede convertir al tipo de datos de la columna para la que se generan los datos. Por ejemplo, si desea generar datos para una columna de tipo INT, se mostraría "Sin resultado obligatorio" si utilizara la instrucción SELECT siguiente:

SELECT RAND() * (column1 - column2) AS Column1 FROM Table1

Debe actualizar la instrucción SELECT para devolver datos que puedan convertirse a INT del modo siguiente:

SELECT CAST(RAND() * (column1 - column2) AS INT) AS Column1 FROM Table1

No se pueden generar datos para las columnas SPARSE

Si intenta generar datos para una tabla que contiene una o varias columnas SPARSE y un conjunto COLUMN_SET, puede producirse el siguiente error: "Error en la generación de datos debido a la siguiente excepción: La ColumnMapping proporcionada no coincide con ninguna columna del origen o del destino".

Este error podría producirse, por ejemplo, si intenta generar datos para la tabla siguiente:

CREATE TABLE [dbo].[SparseTable]
(
ID INT PRIMARY KEY,
C1 varchar(20) SPARSE NULL, 
C2 smallint SPARSE NULL,
C3 varchar(20) SPARSE NULL,
SpecialPurposeColumns XML COLUMN_SET FOR ALL_SPARSE_COLUMNS
)

Para generar los datos de una tabla que contiene columnas SPARSE y un conjunto COLUMN_SET, debe cambiar el método preferido de inserción de datos a "SqlV1CompatibilitySink" o debe usar un generador de datos personalizado.

Si usa "SqlV1CompatibilitySink", la generación de datos podría registrar un rendimiento lento en tablas grandes.

Para obtener más información acerca de cómo se cambia el método preferido de inserción de datos, vea Cómo: Especificar valores predeterminados y opciones para generadores de datos. Para obtener más información acerca de cómo puede crear e implementar un generador de datos personalizados, vea Generar datos de pruebas especializados con un generador de datos personalizado.