En un servidor de edición SQL 2014 (12.0.2430.0 - aún no SP1) con una base de datos en modo de compatibilidad 2012 (trabajando para cambiarlo a 2014 ...) Tengo un puñado de objetos de clave externa que están marcados constantemente como not trusted
en la base de datos . Los descarté y los volví a crear sin NOCHECK
opciones, pero en 5 a 10 minutos vuelven a desconfiar y, si genero un CREATE
script, aparece como:
ALTER TABLE [dbo].[Points] WITH NOCHECK
ADD CONSTRAINT [FK_BadgeId] FOREIGN KEY([BadgeId])
REFERENCES [dbo].[Badge] ([Id])
GO
El script de creación que se utiliza es:
ALTER TABLE [dbo].[Points]
ADD CONSTRAINT [FK_BadgeId] FOREIGN KEY([BadgeId])
REFERENCES [dbo].[Badge] ([Id])
GO
ALTER TABLE [dbo].[Points] CHECK CONSTRAINT [FK_BadgeId]
GO
No hay replicación, no hay herramientas de terceros, y estoy monitoreando todas las declaraciones DDL en la base de datos para que no sea otro usuario.
Puedo verificar bien las restricciones (usando WITH CHECK CHECK
en cada una) pero aún no se confían poco después. Solo los trabajos de mantenimiento que se ejecutan son de Ola a principios de la mañana y esto sucede durante todo el día.
Actualizar:
Entonces, después de un par de rastros para reducir las posibilidades, parece que BULK INSERT
puede estar causando FK
que no se confíe. Esta pregunta msdn indica que esta es una ruta válida para que la clave no sea confiable, que es lo primero que escucho de ella.
Entonces mi pregunta ahora es, ¿existe una estrategia alternativa para usar BULK INSERT
que pueda mantener el is_trusted
estado de clave externa ? Se ejecuta en el contexto de una aplicación que se ejecuta varias veces por hora. Podría hacer que los desarrolladores procesen sus declaraciones de inserción en su lugar, pero preferiría no poner un ultimátum en el uso BULK INSERT
si no es necesario.
SqlBulkCopy
el mismo efecto, pero hay (al menos ahora) una opción para hacer la copia masiva sin dejar de verificar las restricciones, lo que significa que la instalación de copia masiva puede hacer la comprobación en el principal, lo más probable es que bcp tenga alguna opción para habilitar ese. Quien haya hecho que el modo sin verificación sea el predeterminado debe ser golpeado en la cara.