Trong công cụ dữ liệu SQL Server Công cụ bạn có tùy chọn triển khai "Chặn triển khai gia tăng nếu mất dữ liệu có thể xảy ra", mà tôi cược là cách tốt nhất để kiểm tra. Cho phép nói rằng chúng tôi có một bảng foo, và một thanh cột mà bây giờ là dư thừa - không có phụ thuộc, khóa ngoài vvvvà chúng tôi đã loại bỏ các tham chiếu đến cột này trong lớp dữ liệu của chúng tôi và các thủ tục được lưu trữ vì nó đơn giản là không đã sử dụng. Nói cách khác, chúng tôi hài lòng rằng việc giảm cột này sẽ không có tác dụng phụ.Mức độ chi tiết của "Chặn triển khai gia tăng nếu mất dữ liệu có thể xảy ra"
Có một vài con ruồi trong thuốc mỡ:
- Các cột có dữ liệu trong nó
- Cơ sở dữ liệu được công bố để hàng trăm khách hàng phân phối, và nó có thể mất vài tháng cho sự thay đổi để gợn sóng cho tất cả khách hàng
Khi cột được điền, xuất bản sẽ không thành công trừ khi chúng tôi thay đổi tùy chọn "Chặn triển khai gia tăng nếu mất dữ liệu có thể xảy ra". Tuy nhiên, tùy chọn này ở cấp cơ sở dữ liệu, không phải là cấp độ bảng và do tính chất phân tán của khách hàng, chúng tôi phải tắt tùy chọn "mất dữ liệu" trong nhiều tháng trước khi tất cả cơ sở dữ liệu được cập nhật và bật lại một khi tất cả khách hàng đã cập nhật (cơ sở dữ liệu của chúng tôi có số phiên bản do công ty của chúng tôi thiết lập).
Bạn có thể nghĩ chúng ta có thể giải quyết việc này với một kịch bản trước khi triển khai như
if exists (select * from information_schema.columns where table_name = 'foo' and column_name = 'bar') BEGIN
alter table foo drop constraint DF_foo_bar
alter table foo drop column bar
END
Nhưng một lần nữa thất bại này trừ khi chúng tôi lần lượt các "mất dữ liệu có thể xảy ra" tùy chọn tắt.
Tôi chỉ đơn giản quan tâm đến những gì người khác đã làm trong trường hợp này vì tôi muốn có mức độ chi tiết mà hiện tại dường như không thể.
Tôi vừa mới thiết lập tùy chọn đó để False và được biết rằng nó được thực hiện và biết hậu quả. Tôi không biết làm thế nào bạn đang đẩy bản phát hành. Nếu bạn đang tăng dần (áp dụng gói 1, sau đó gói 2, v.v.), bạn có thể tắt nó cho một bản phát hành để thả cột, sau đó bật lại. Nếu chỉ trên một "khi cần thiết" cơ sở, tôi muốn xem xét tắt nó đi và xem DB thay đổi cẩn thận. –
Cảm ơn @PeterSchott. Xây dựng của chúng tôi tạo các dacpacs được tải xuống và áp dụng trên ứng dụng khách, nhưng do bản chất của các bản sửa lỗi và khách hàng (một số khách hàng có thể không sử dụng máy của họ trong mùa đông chẳng hạn và tải bản phát hành mới nhất khi họ bật) cửa sổ để chuyển đổi cài đặt tắt và bật cho một bản phát hành cụ thể hơi khó. Nếu sự đồng thuận là * không * để thiết lập mất dữ liệu, thì đó là điều tôi sẽ phải cân nhắc. Tôi đã luôn luôn nghĩ rằng nó nên được trên. –
Tôi thường đồng ý rằng việc bật tính năng này có thể hữu ích, nhưng đặc biệt trong trường hợp của bạn, bạn có thể muốn xóa nó đi. Nếu bạn hiểu những rủi ro chung thì đó không phải là một vấn đề lớn. Bạn luôn có thể chọn tùy chọn "tạo tập lệnh" để xem lại các thay đổi nếu bạn quan tâm đến các thay đổi khác. Bạn cũng có thể sử dụng tùy chọn để xem dòng lệnh báo cáo thay đổi hoặc một phần của tùy chọn tập lệnh để xem những gì có thể bị ảnh hưởng. –