2010-03-03 42 views
6

Tôi đang phát triển một trang web hướng dữ liệu và khá nhiều logic lập trình nằm trong các thủ tục lưu trữ cơ sở dữ liệu và các chức năng cơ sở dữ liệu. Tôi thấy mình thay đổi proc/chức năng được lưu trữ khá nhiều để sửa lỗi hoặc thêm chức năng mới. Các dữ liệu (bảng) vẫn hầu như không bị ảnh hưởng.Làm thế nào để tách logic lập trình và dữ liệu trong MS SQL Server 2005?

Vấn đề tôi đang gặp là theo dõi các phiên bản của proc/chức năng được lưu trữ. Hiện tại tôi đang tăng phiên bản của toàn bộ cơ sở dữ liệu khi tôi thực hiện một tập hợp các thay đổi. Vì dữ liệu rất lớn (10 Gb), tôi gặp phải các vấn đề phải chạy phiên bản phát triển và phát hành các phiên bản cơ sở dữ liệu song song.

Tôi muốn đặt tất cả các procs và chức năng được lưu trữ trong một cơ sở dữ liệu và giữ dữ liệu trong một cơ sở dữ liệu, để tôi có thể quản lý tốt hơn các thay đổi.

Tôi chắc chắn những người khác sẽ gặp đề xuất tương tự và đề xuất yêu cầu về cách xử lý tốt nhất tình huống này.

Trả lời

1

Bạn chỉ có thể phiên bản các vùng lược đồ. Kết hợp với việc mở rộng điều khiển nguồn (như đề xuất của Rawheiser), bạn chỉ cần xem phiên bản bạn có trong cơ sở dữ liệu, tạo ra một sự khác biệt và áp dụng nó.

Ngoài ra, có một số công cụ tuyệt vời để so sánh cơ sở dữ liệu và lược đồ của chúng, tạo tập lệnh DDL v.v.: SQL Workbench, Power Architect, DDLUtils và So sánh SQL Redgate. So sánh SQL có khả năng hoạt động tốt nhất với SQL Server, mặc dù tất cả những thứ khác là FOSS và cung cấp ROI cao hơn (về thời gian học tập và những gì bạn có thể làm với chúng) vì chúng là platoform và RDBMS độc lập.

Cuối cùng, tôi phải nói ... Tôi hiểu rằng kết quả ngay lập tức bạn nhận được với logic trong DB là hấp dẫn, nhưng nếu bạn đã vượt ra ngoài nhiều hơn một vài thủ tục trong cơ sở dữ liệu, bạn đang thiết lập tự của bạn cho khá nhiều đau đớn, chọn lọc thông qua những gì dễ dàng biến thành mã spaghetti và khóa ứng dụng của bạn cho một nhà cung cấp cơ sở dữ liệu duy nhất. Bạn có thể có lý do của bạn, nhưng tôi đã có và không thích nó rất nhiều. Logic có thể sống rất độc đáo trong một lớp khác.

0

Đối với kiểm soát nguồn bạn có một vài lựa chọn:

  1. Sử dụng một Visual Studio Database project.

  2. Sử dụng SQL Server 2005 tích hợp trong hỗ trợ cho source control

  3. Sử dụng một phần công cụ thứ ba như SQL Compare

IMO Lựa chọn 1. là một lợi thế.

+0

Bạn có thể giải thích tại sao "Tùy chọn 1. thích hợp hơn không."? –

2

Tôi cũng muốn khuyên bạn sử dụng mở rộng từ khóa kiểm soát nguồn trong thủ tục lưu trữ của bạn ($ Version: $)

Bằng cách đó bạn có thể nhãn cầu, grep, syscomments tìm kiếm, vv để xem những gì phiên bản mà bạn có trong cơ sở dữ liệu triển khai của bạn.

Các vấn đề liên quan