Estoy trabajando en un gran proyecto ETL y DW donde utilizamos TFS / control de fuente junto con SSIS y SSDT.
Hoy, descubrí que si bien un paquete SSIS está realizando una INSERCIÓN A GRANEL en una tabla de base de datos, no es posible realizar una Comparación de esquema SSDT con esa base de datos. Esto es lamentable, ya que algunos de nuestros paquetes tardan bastante tiempo en completarse. Queremos usar la función Comparar esquemas para detectar cambios en la estructura de la base de datos para guardarlos en nuestro proyecto SSDT para el control de versiones de la base de datos.
Mirando un poco más sobre esto, descubrí que la función Comparar esquemas en SSDT ejecuta un script SQL que llama a la OBJECTPROPERTY()
función del sistema en las tablas de la base de datos. Específicamente en mi caso, cualquier llamada a OBJECTPROPERTY(<object_id>, N'IsEncrypted')
parece estar bloqueada, cuando se <object_id>
refiere a una tabla que actualmente se está insertando en masa.
En Visual Studio, SSDT Schema Compare simplemente agota el tiempo de espera después de un tiempo y afirma que no se han detectado diferencias.
¿Hay alguna solución a este problema en SSDT, o tal vez debería intentar presentar un informe de error de MS Connect?
Alternativamente, dado que BULK INSERT ocurre desde un paquete SSIS, ¿hay alguna forma de hacer esta inserción sin bloquear las OBJECTPROPERTY
llamadas en la tabla? Editar: en SSIS OLE DB Destinations, podemos eliminar la marca de verificación de "Tabla de bloqueo", que hace lo que dice, pero esto puede afectar el rendimiento en algunas situaciones. Estoy mucho más interesado en una solución que permita que SSDT Schema Compare haga su trabajo, incluso si algunos objetos están bloqueados.