vista ver varias usuarios una todas tablas significa restaurar que listar las estado datos crear conectados compatibilidad bases sql-server sql-server-2000 check-constraints database-integrity sp-msforeachtable

sql-server - varias - ver estado de base de datos sql server



SQL Server: ¿Cómo hacer que el servidor verifique todas sus restricciones de verificación? (3)

hacer esto:

ALTER TABLE dbo.Test WITH CHECK CHECK CONSTRAINT CK_Test;

Explicación: ¿Puedes confiar en tus limitaciones?

Parece que algunos scripts generados por Enterprise Manager * (o no, no importa) crearon restricciones de verificación CON NOCHECK .

Ahora, cuando alguien modifica la tabla, SQL Server está tropezando con las restricciones de verificación fallidas y arrojando errores.

¿Puedo hacer que SQL pase por todas sus restricciones de verificación y las verifique?

Corriendo:

sp_msforeachtable ''ALTER TABLE ? CHECK CONSTRAINT all''

solo habilita las restricciones de verificación previamente deshabilitadas, en realidad no las verifica.

Notas al pie

* SQL Server 2000


Lo encontré

Comprueba todas las restricciones en todas las tablas en la base de datos actual, ya sea que la restricción esté habilitada o no:

DBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS

Para verificar solo las restricciones habilitadas:

DBCC CHECKCONSTRAINTS


DBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS realmente no hará que sus restricciones sean confiables. Informará cualquier fila que viole las restricciones. Para hacer realmente confiables todas sus restricciones, puede hacer lo siguiente:

DBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS --This reports any data that violates constraints. --This reports all constraints that are not trusted SELECT OBJECT_NAME(parent_object_id) AS table_name, name, is_disabled FROM sys.check_constraints WHERE is_not_trusted = 1 UNION ALL SELECT OBJECT_NAME(parent_object_id) AS table_name, name, is_disabled FROM sys.foreign_keys WHERE is_not_trusted = 1 ORDER BY table_name

En SQL Server 2000 puede encontrar restricciones no confiables con:

--Reports all constraints that are not trusted (SQL 2000) SELECT name, type, status, (status & 2048) AS IsTrusted, (status & 256) AS IsEnabled, OBJECTPROPERTY(id,''CnstIsNotTrusted'') as is_not_trusted, OBJECTPROPERTY(id,''CnstIsDisabled'') as is_disabled FROM sysobjects WHERE type IN (''C'', ''F'') --C=Constraint, F=Foreign Key AND OBJECTPROPERTY(id,''CnstIsNotTrusted'') <> 0 AND OBJECTPROPERTY(id,''CnstIsDisabled'') = 0

Las restricciones se vuelven a habilitar con el cheque :

--This makes all constraints trusted -- but first anything reported by DBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS must be fixed. exec sp_msforeachtable ''ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all''

Nota : en la última declaración, WITH CHECK CHECK no es un error tipográfico. "WITH CHECK" verificará todos los datos de la tabla para asegurarse de que no haya violaciones, y hará que la restricción sea confiable, mientras que la verificación asegurará que las restricciones estén habilitadas.

Véase también: http://sqlblog.com/blogs/tibor_karaszi/archive/2008/01/12/non-trusted-constraints.aspx

http://sqlblog.com/blogs/tibor_karaszi/archive/2008/01/12/non-trusted-constraints-and-performance.aspx