Controlar comprobación de restricciones mediante operaciones de importación masiva
Actualizado: 12 de diciembre de 2006
Al realizar importaciones masivas de datos, puede controlar si las restricciones CHECK y FOREIGN KEY se aplican mediante la operación de importación masiva. Una restricción es una regla de negocios que se coloca en una columna para definir sus valores válidos; por ejemplo, una restricción de una columna con extensiones telefónicas puede necesitar el formato ####. La definición y comprobación de restricciones es el mecanismo estándar para aplicar la integridad de datos. Microsoft recomienda el uso de comprobación de restricciones durante una importación masiva incremental.
En ocasiones es preferible omitir las restricciones. Un ejemplo sería que los datos de entrada contuviesen filas que infringieran las restricciones. Si omite las restricciones, puede cargar los datos y, a continuación, utilizar instrucciones Transact-SQL para limpiar los datos.
Si la tabla no estaba vacía antes de la operación de importación masiva, el costo de volver a validar la restricción puede ser mayor que el costo de aplicar las restricciones CHECK o FOREIGN KEY a los datos incrementales. Después de importar datos problemáticos, debe utilizar Transact-SQL para limpiar los datos importados.
Importante: |
---|
Al deshabilitar las restricciones, puede que se tome un bloqueo de modificación de esquema para actualizar los metadatos. Esto podría interferir con otros comandos (como una generación de índice en línea) o transacciones. Por ejemplo, podría producirse un error en una transacción de aislamiento de instantánea que intente obtener acceso a la tabla de destino debido a cambios de DDL simultáneas. |
Para obtener más información acerca de las restricciones, vea Restricciones.
Durante una operación de importación masiva, el comportamiento de comprobación de restricciones depende del comando utilizado en la operación. De manera predeterminada, el comando bcp y la instrucción BULK INSERT omiten las restricciones. En cambio, para una instrucción INSERT ... SELECT * FROM OPENROWSET(BULK...), el valor predeterminado es comprobar las restricciones.
En la siguiente tabla se resume el comportamiento predeterminado de comprobación de restricciones de los comandos de importación masiva.
Comando | Comportamiento predeterminado |
---|---|
bcp |
Omitir restricciones |
BULK INSERT |
Omitir restricciones |
INSERT ... SELECT * FROM OPENROWSET(BULK...) |
Comprobar restricciones |
Cada uno de los comandos de importación masiva proporciona un calificador que permite cambiar el control de las restricciones, como se explica en las siguientes secciones.
Comprobar restricciones con bcp o BULK INSERT
De manera predeterminada, las restricciones se omiten durante una operación de importación masiva que se realice mediante el comando bcp o la instrucción BULK INSERT.
Mediante el comando bcp o la instrucción BULK INSERT, puede especificar que se apliquen restricciones durante una operación de importación masiva. Si se aplican restricciones, se ralentiza la operación de importación masiva, pero se garantiza que ninguno de los datos insertados infrinja las restricciones existentes. En la siguiente tabla se resumen los calificadores que pueden utilizarse para especificar la aplicación de restricciones durante una operación de importación masiva.
Comando | Calificador | Tipo de calificador |
---|---|---|
bcp |
-h"CHECK_CONSTRAINTS" |
Sugerencia |
BULK INSERT |
CHECK_CONSTRAINTS |
Argumento |
Para obtener más información, vea bcp (utilidad) y BULK INSERT (Transact-SQL).
Omitir restricciones en INSERT ... SELECT * FROM OPENROWSET(BULK...)
De forma predeterminada, INSERT comprueba las restricciones CHECK y FOREIGN KEY. Sin embargo, la instrucción INSERT ... SELECT * FROM OPENROWSET(BULK...) le permite anular la comprobación de las restricciones CHECK y FOREIGN KEY. .
[!NOTA] No puede deshabilitar las restricciones UNIQUE, PRIMARY KEY ni NOT NULL.
En la tabla siguiente se resume la sugerencia de tabla para omitir las restricciones CHECK y FOREIGN KEY.
Comando | Calificador | Tipo de calificador |
---|---|---|
INSERT ... SELECT * FROM OPENROWSET(BULK...) |
WITH (IGNORE_CONSTRAINTS) |
Sugerencia de tabla |
En el siguiente ejemplo se muestra cómo utilizar este calificador. Para obtener más información acerca de la sugerencia IGNORE_CONSTRAINTS, vea Sugerencias de tabla (Transact-SQL).
Verificar la importación de datos
Si omite las restricciones durante una operación de importación masiva, los datos que infringen las restricciones existentes pueden insertarse en la tabla. Por tanto, cada restricción omitida en la tabla se marca como is_not_trusted en la vista de catálogo sys.check_constraints o sys.foreign_keys. En algún momento, tendrá que comprobar las restricciones en la tabla completa.
Puede identificar las filas importadas de la tabla que infringen las restricciones; para ello, compruebe los datos importados manualmente mediante los procedimientos almacenados o las consultas de Transact-SQL que prueban las condiciones de la restricción.
Vea también
Otros recursos
bcp (utilidad)
BULK INSERT (Transact-SQL)
DBCC CHECKCONSTRAINTS (Transact-SQL)
INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
SELECT (Transact-SQL)
Sugerencias de tabla (Transact-SQL)
Ayuda e información
Obtener ayuda sobre SQL Server 2005
Historial de cambios
Versión | Historial |
---|---|
12 de diciembre de 2006 |
|