Pracuję w dużym projekcie ETL i DW, w którym używamy kontroli TFS / źródła razem z SSIS i SSDT.
Dzisiaj dowiedziałem się, że chociaż pakiet SSIS wykonuje BULK INSERT w tabeli bazy danych, nie można wykonać porównania schematu SSDT z tą bazą danych. Jest to niefortunne, ponieważ niektóre z naszych pakietów zajmują dość dużo czasu. Chcemy użyć funkcji porównywania schematów do wykrywania zmian w strukturze bazy danych w celu zapisania ich w naszym projekcie SSDT w celu kontroli wersji bazy danych.
Przyglądając się trochę temu, odkryłem, że funkcja porównywania schematów w SSDT wykonuje skrypt SQL, który wywołuje funkcję OBJECTPROPERTY()
systemową na tabelach w bazie danych. W szczególności w moim przypadku wszelkie wywołania do OBJECTPROPERTY(<object_id>, N'IsEncrypted')
wydają się być zablokowane, gdy <object_id>
odnoszą się do tabeli, która jest obecnie wstawiana zbiorczo.
W programie Visual Studio porównanie schematów SSDT po prostu wygasa po chwili i twierdzi, że nie wykryto żadnych różnic.
Czy istnieje obejście tego problemu w SSDT, czy może powinienem spróbować zgłosić raport o błędzie MS Connect?
Alternatywnie, skoro BULK INSERT odbywa się z pakietu SSIS, to może jest jakiś sposób na wykonanie tego wstawiania bez blokowania OBJECTPROPERTY
wywołań na stole? Edycja: W miejscach docelowych SSIS OLE DB możemy usunąć znacznik wyboru z „Zablokuj tabelę”, co robi, co mówi, ale w niektórych sytuacjach może to pogorszyć wydajność. Bardziej interesuje mnie rozwiązanie, które pozwala porównywać schemat SSDT, nawet jeśli niektóre obiekty są zablokowane.