Saya bekerja di proyek ETL dan DW besar di mana kami menggunakan TFS / kontrol sumber bersama dengan SSIS dan SSDT.
Hari ini, saya menemukan bahwa sementara paket SSIS melakukan BULK INSERT ke dalam tabel database, tidak mungkin untuk melakukan Perbandingan Skema SSDT terhadap database itu. Ini sangat disayangkan, karena beberapa paket kami membutuhkan waktu yang cukup lama untuk diselesaikan. Kami ingin menggunakan fungsi Bandingkan Skema untuk mendeteksi perubahan pada struktur basis data untuk menyimpannya dalam proyek SSDT kami untuk kontrol versi dari basis data.
Melihat sedikit lebih dalam ini, saya menemukan bahwa fungsi Skema Bandingkan di SSDT mengeksekusi skrip SQL yang memanggil OBJECTPROPERTY()
fungsi sistem pada tabel dalam database. Khususnya dalam kasus saya, semua panggilan ke OBJECTPROPERTY(<object_id>, N'IsEncrypted')
tampaknya diblokir, ketika <object_id>
merujuk ke tabel yang saat ini sedang dimasukkan secara massal.
Dalam Visual Studio, Bandingkan Skema SSDT hanya keluar setelah beberapa saat dan mengklaim bahwa tidak ada perbedaan yang terdeteksi.
Apakah ada solusi untuk masalah ini di SSDT, atau haruskah saya mencoba mengajukan laporan bug MS Connect?
Atau, karena BULK INSERT terjadi dari paket SSIS, apakah mungkin ada beberapa cara untuk membuat penyisipan ini tanpa mengunci OBJECTPROPERTY
-panggilan di atas meja? Sunting: Di SSIS OLE DB Destinasi, kita dapat menghapus tanda centang dari "Lock Table", yang melakukan apa yang dikatakannya, tetapi ini mungkin merusak kinerja dalam beberapa situasi. Saya jauh lebih tertarik pada solusi yang memungkinkan SSDT Schema Compare untuk melakukan tugasnya, bahkan jika beberapa objek terkunci.