Sto lavorando a un grande progetto ETL e DW in cui utilizziamo il controllo TFS / sorgente insieme a SSIS e SSDT.
Oggi ho scoperto che mentre un pacchetto SSIS sta eseguendo un INSERTO BULK in una tabella di database, non è possibile eseguire un confronto di schemi SSDT con quel database. Questo è un peccato, poiché alcuni dei nostri pacchetti impiegano molto tempo per essere completati. Vogliamo utilizzare la funzione Confronto schema per rilevare le modifiche alla struttura del database al fine di salvarle nel nostro progetto SSDT per il controllo della versione del database.
Analizzando un po 'di più, ho scoperto che la funzione Confronto schema in SSDT esegue uno script SQL che chiama la OBJECTPROPERTY()
funzione di sistema sulle tabelle nel database. In particolare, nel mio caso, qualsiasi chiamata a OBJECTPROPERTY(<object_id>, N'IsEncrypted')
sembra bloccata, quando si <object_id>
riferisce a una tabella che viene attualmente inserita in blocco .
In Visual Studio, il confronto dello schema SSDT scade semplicemente dopo un po 'e afferma che non sono state rilevate differenze.
Esiste una soluzione alternativa a questo problema in SSDT o dovrei forse provare a presentare una segnalazione di bug di MS Connect?
In alternativa, poiché BULK INSERT si verifica da un pacchetto SSIS, esiste forse un modo per effettuare questo inserimento senza bloccare OBJECTPROPERTY
-call sulla tabella? Modifica: nelle destinazioni OLE DB SSIS, possiamo rimuovere il segno di spunta da "Blocca tabella", che fa ciò che dice, ma ciò potrebbe compromettere le prestazioni in alcune situazioni. Sono molto più interessato a una soluzione che consenta allo Schema Compare SSDT di fare il suo lavoro, anche se alcuni oggetti sono bloccati.