Có một số câu hỏi về SO về kiểm soát phiên bản cho SQL và nhiều tài nguyên trên web, nhưng tôi không thể tìm thấy thứ gì đó hoàn toàn bao gồm những gì tôi đang cố gắng thực hiện.Phương pháp kiểm soát phiên bản SQL
Trước hết, tôi đang nói về một phương pháp ở đây. Tôi quen thuộc với các ứng dụng kiểm soát nguồn khác nhau và tôi quen thuộc với các công cụ như So sánh SQL của Red Gate, v.v. và tôi biết cách viết một ứng dụng để kiểm tra mọi thứ trong và ngoài hệ thống kiểm soát nguồn của tôi một cách tự động. Nếu có một công cụ đặc biệt hữu ích trong việc cung cấp một phương pháp hoàn toàn mới hoặc có chức năng hữu ích và không phổ biến thì tuyệt vời, nhưng đối với các nhiệm vụ được đề cập ở trên, tôi đã được thiết lập.
Các yêu cầu mà tôi đang cố gắng để đáp ứng là:
- Giản đồ cơ sở dữ liệu và bảng tra cứu dữ liệu được phiên bản
- script DML cho sửa dữ liệu cho các bảng lớn được phiên bản
- Một máy chủ có thể được quảng cáo từ phiên bản N lên phiên bản N + X trong đó X không phải lúc nào cũng là 1
- Mã không được sao chép trong hệ thống kiểm soát phiên bản - ví dụ: nếu tôi thêm cột vào bảng tôi không muốn có để đảm bảo rằng thay đổi trong cả tập lệnh tạo và thay đổi ipt
- Hệ thống này cần phải hỗ trợ nhiều khách hàng là những người có các phiên bản khác nhau cho các ứng dụng (cố gắng để có được tất cả chúng lên để trong vòng 1 hoặc 2 phiên bản, nhưng không có được nêu ra)
Một số tổ chức giữ các kịch bản thay đổi theo phong trong phiên bản điều khiển của họ và để có được từ phiên bản N đến N + 3 bạn sẽ phải chạy các kịch bản cho N-> N + 1 rồi N + 1-> N + 2 rồi N + 2-> N + 3. Một số kịch bản này có thể lặp lại (ví dụ, một cột được thêm vào nhưng sau đó nó được thay đổi để thay đổi kiểu dữ liệu). Chúng tôi đang cố gắng tránh sự lặp lại đó vì một số DB khách hàng có thể rất lớn, vì vậy những thay đổi này có thể mất nhiều thời gian hơn mức cần thiết.
Một số tổ chức đơn giản sẽ giữ tập lệnh xây dựng cơ sở dữ liệu đầy đủ ở mỗi cấp phiên bản, sau đó sử dụng công cụ như So sánh SQL để đưa cơ sở dữ liệu lên một trong các phiên bản đó. Vấn đề ở đây là việc trộn lẫn các kịch bản DML có thể là một vấn đề. Hãy tưởng tượng một kịch bản mà tôi thêm một cột, sử dụng một kịch bản DML để điền vào cột đã nói, sau đó trong một phiên bản sau đó tên cột được thay đổi.
Có lẽ có một số giải pháp lai? Có lẽ tôi chỉ yêu cầu quá nhiều? Bất kỳ ý tưởng hoặc đề nghị sẽ được đánh giá rất nhiều mặc dù.
Nếu người kiểm duyệt nghĩ rằng điều này sẽ phù hợp hơn với tư cách là một wiki cộng đồng, vui lòng cho tôi biết.
Cảm ơn!
Không biết bạn có thấy câu trả lời này hay không, nhưng tôi có một số câu trả lời hợp lý: http://stackoverflow.com/questions/2401229/database-structure-and-source-control-best-practice – Paddy
Điều này có hữu ích không ? http://msmvps.com/blogs/deborahk/archive/2010/05/02/vs-2010-database-project-an-introduction.aspx Lưu ý rằng có nhiều liên kết hơn ở cuối bài viết. –
@Paddy - Cảm ơn bạn đã liên kết. pdc có một giải pháp phù hợp mà chúng tôi đang cân nhắc, nhưng nhiệm vụ tạo kịch bản được khoán ngoài đến Ấn Độ (không phải lựa chọn của tôi) và chuyên môn có hạn, vì vậy một số mã phức tạp hơn có thể là một vấn đề. Nó vẫn còn trên bàn cho dù bây giờ. –