Tôi đang làm việc tại một dự án ETL và DW lớn, nơi chúng tôi sử dụng kiểm soát TFS / nguồn cùng với cả SSIS và SSDT.
Hôm nay, tôi phát hiện ra rằng trong khi gói SSIS đang thực hiện BULK INSERT vào bảng cơ sở dữ liệu, thì không thể thực hiện So sánh lược đồ SSDT so với cơ sở dữ liệu đó. Điều này thật đáng tiếc, vì một số gói của chúng tôi mất khá nhiều thời gian để hoàn thành. Chúng tôi muốn sử dụng chức năng Schema So sánh để phát hiện các thay đổi đối với cấu trúc cơ sở dữ liệu để lưu chúng trong dự án SSDT của chúng tôi để kiểm soát phiên bản của cơ sở dữ liệu.
Nhìn sâu hơn một chút vào điều này, tôi thấy rằng hàm Schema So sánh trong SSDT thực thi một tập lệnh SQL gọi OBJECTPROPERTY()
hàm hệ thống trên các bảng trong cơ sở dữ liệu. Cụ thể trong trường hợp của tôi, bất kỳ cuộc gọi nào OBJECTPROPERTY(<object_id>, N'IsEncrypted')
dường như bị chặn, khi <object_id>
đề cập đến một bảng hiện đang được chèn số lượng lớn.
Trong Visual Studio, Lược đồ SSDT So sánh đơn giản chỉ sau một thời gian và tuyên bố rằng không có sự khác biệt nào được phát hiện.
Có cách giải quyết vấn đề này trong SSDT không, hoặc có lẽ tôi nên thử gửi báo cáo lỗi MS Connect?
Ngoài ra, vì BULK INSERT xảy ra từ gói SSIS, có lẽ có một số cách để thực hiện việc chèn này mà không khóa các khóa OBJECTPROPERTY
trên bàn? Chỉnh sửa: Trong SSIS OLE DB Destination, chúng tôi có thể xóa dấu kiểm khỏi "Bảng khóa", thực hiện những gì nó nói, nhưng điều này có thể làm giảm hiệu suất trong một số trường hợp. Tôi quan tâm nhiều hơn đến một giải pháp cho phép So sánh lược đồ SSDT thực hiện công việc của mình, ngay cả khi một số đối tượng bị khóa.