2009-01-01 3 views
11

Giả sử chúng ta có một máy chủ tích hợp liên tục. Khi tôi đăng ký, post-hook kéo mã mới nhất, chạy các kiểm tra, gói mọi thứ. Cách tốt nhất để tự động hóa các thay đổi cơ sở dữ liệu là gì?Quản lý cơ sở dữ liệu SQL Server với tích hợp liên tục

Lý tưởng nhất, tôi muốn xây dựng một trình cài đặt mà một trong hai có thể xây dựng một cơ sở dữ liệu từ đầu hoặc cập nhật một hiện sử dụng một số phương pháp đồng bộ tự động.

Trả lời

2

Nếu bạn có cơ hội xác định và kiểm soát toàn bộ quá trình tạo và quản lý cơ sở dữ liệu, hãy xem DB Ghost - đó không chỉ là công cụ - đó là một quá trình.

Nếu bạn thích nó và có thể thực hiện nó, bạn sẽ nhận được lợi nhuận lớn vào nó - nhưng đó là một chút của một "tất cả-hoặc-không có gì" loại phương pháp. Được đề xuất.

+0

Chúng tôi sử dụng DB Ghost (với CC.NET). Các khiếu nại duy nhất là nó barfs nếu bạn có ký tự không ASCII trong lưu trữ Proc script (somthing rằng Visual Studio hiện khi bạn sử dụng dự án DB của nó). – StingyJack

0

Phiên bản mới nhất (5.0) của DB Ghost không gặp vấn đề "không phải ký tự ASCII" (nó chỉ có nghĩa là tệp được mã hóa UTF8) và có thể thực hiện chính xác những gì bạn cần. Ngoài ra, các công cụ thực sự có thể được sử dụng độc lập để thực hiện các chức năng khác nhau (kịch bản, xây dựng, so sánh, nâng cấp và đóng gói) nếu bạn muốn, nó chỉ sử dụng tất cả chúng cùng nhau cung cấp một quy trình từ đầu đến cuối làm cho giá trị tổng thể lớn hơn tổng của các phần của nó. Về bản chất, để thay đổi lược đồ bạn cập nhật các tập lệnh tạo đối tượng riêng lẻ và tập lệnh chèn bảng (cho dữ liệu tham chiếu) được giữ trong điều khiển nguồn giống như bạn đang phát triển cơ sở dữ liệu greenfield “một ngày”. Các công cụ DB Ghost được sử dụng để cho phép toàn bộ việc này bằng cách xây dựng các kịch bản này thành một cơ sở dữ liệu mới (sử dụng tích hợp liên tục nếu cần) và sau đó so sánh và nâng cấp cơ sở dữ liệu đích, có thể là bản sao của cơ sở dữ liệu sản xuất. Quá trình này tạo ra một tập lệnh delta có thể được sử dụng trên cơ sở dữ liệu sản xuất thực tế trong quá trình hoạt động.

Bạn thậm chí có thể tạo dự án cơ sở dữ liệu Visual Studio và thêm nó vào bất kỳ giải pháp nào bạn hiện có.

Malc

1

tôi sẽ thận trọng đối với sử dụng một bản sao lưu db như một vật phát triển, hầu hết các thực hành tốt nhất CI gợi ý rằng bạn quản lý các lược đồ, thủ tục, gây nên, và quan điểm như hiện vật phát triển hạng nhất. Các tác dụng phụ là bạn có thể tiến thêm một bước này và sử dụng chúng để xây dựng cơ sở dữ liệu mới bất cứ khi nào bạn muốn, lý tưởng là bạn cũng có một số dữ liệu có thể được đẩy vào cơ sở dữ liệu.

Đây là một phiên bản ghi chú vách đá để có được bàn chân ướt, nhưng có rất nhiều trên mạng trong không gian này: http://www.infoq.com/news/2008/02/versioning_databases_series

Tôi thích một số ý kiến ​​cho rằng Scott Ambler có ở đây là tốt, trang web này là tốt nhưng cuốn sách là đáng ngạc nhiên sâu sắc cho một bộ khó khăn như vậy của các vấn đề. http://www.agiledata.org/ http://www.amazon.com/exec/obidos/ASIN/0321293533/ambysoftinc

1

Bạn đã nhìn FluentMigrator? Tải xuống mặc định bao gồm các tập lệnh Nant sẽ dễ dàng thêm vào CI. Miễn phí, mã nguồn mở và dễ sử dụng. Làm việc cho nhiều cơ sở dữ liệu.

0

Tôi biết bài này là cũ, nhưng chúng tôi có một giải pháp mới mà có phương pháp sau đây:

  1. phát triển kịch bản thay đổi SQL cá nhân và cam kết họ nguồn kiểm soát.
  2. Chương trình của chúng tôi (OneScript) kéo tệp tập lệnh thay đổi từ kiểm soát nguồn, lọc và sắp xếp chúng và tạo một tệp tập lệnh phát hành .
  3. Tệp tập lệnh bản phát hành đó sau đó được áp dụng cho cơ sở dữ liệu để thực hiện bản phát hành.

Trang chủ của chúng tôi here giải thích quy trình này chi tiết hơn và có liên kết đến ví dụ thực hiện các bước này tự động từ móc Subversion. Vì vậy, ngay sau khi một cam kết, các nhà phát triển nhận được một email nói rằng nếu phát hành thành công hoặc có lỗi. Mã PowerScript được bao gồm.

Tuyên bố từ chối trách nhiệm -Tôi đang làm việc tại công ty tạo OneScript.

3

Gần đây tôi đã gặp phải an article, có thể được sử dụng.

Tác giả đã giải thích một số phương pháp tích hợp liên tục tốt nhất bao gồm thử nghiệm, xử lý và tự động hóa.

Dưới đây là một số trong những bài học quan trọng:

  • Trong nhiều cửa hàng đang thử nghiệm đơn vị tại thời điểm cam kết. Đối với cơ sở dữ liệu, nó được ưu tiên chạy tất cả các kiểm tra đơn vị cùng một lúc và ngược lại với cơ sở dữ liệu QA, so với phát triển, như một phần của bước kiểm tra
  • Bước kiểm tra là một phần quan trọng của bất kỳ quá trình CI/CD nào. Tập lệnh thử nghiệm, bao gồm cả các kiểm tra đơn vị, cũng nên được phiên bản trong kiểm soát nguồn, được trích xuất tại điểm của bước Xây dựng và được thực thi
  • . cách tiếp cận tốt nhất là sử dụng công cụ hoặc tập lệnh để tạo dữ liệu thử nghiệm tổng hợp nhanh chóng, liên tục và đáng tin cậy cho các bảng giao dịch của bạn
  • Chạy thử nghiệm đơn vị để tạo kết quả tóm tắt thủ công nhằm mục đích tự động hóa. Chúng ta cần kết quả có thể đọc được bằng máy, có thể cho phép quá trình tự động hủy, phân nhánh và/hoặc tiếp tục.
  • Chạy một quy trình CI, yêu cầu 100% tất cả các thử nghiệm để vượt qua, cũng giống như không có CI, nếu đường ống công việc được thiết lập nguyên tử để dừng khi hỏng, điều mà nó cần. Để tạo luồng kim, các thử nghiệm phải được xây dựng trong các ngưỡng, điều này sẽ làm tăng lỗi dựa trên% thử nghiệm thất bại hoặc trong một số trường hợp, nếu một số thử nghiệm ưu tiên cao nhất không thành công.
  • Tất cả các quy trình cuối cùng sẽ tạo ra kết quả vượt qua hoặc thất bại Boolean, nhưng một số quy trình không tự động có thể dễ dàng tìm đường vào đường ống công việc CI của bạn (ví dụ: kiểm tra đơn vị). Phần mềm phải được cắm vào bất kỳ đường ống công việc nào, lấy các đầu vào đã biết và tạo ra các kết quả đầu ra mong đợi - như vượt qua, thất bại.
  • Quá trình CI/CD phải bị hủy bỏ do lỗi và email thông báo phải được gửi ngay lập tức và tiếp tục xoay vòng đường ống.
  • Quá trình CI không nên chu kỳ một lần nữa cho đến khi bất kỳ lỗi nào trong bản dựng cuối cùng được sửa. Khi thất bại, toàn bộ nhóm sẽ nhận được thông báo lỗi, bao gồm nhiều chi tiết về những gì không thành công nhất có thể.
  • Nếu đường ống mất 1 giờ, từ đầu đến cuối, để hoàn thành, bao gồm tất cả thử nghiệm, thì tất cả khoảng thời gian xây dựng nên được đặt thành không ít hơn một giờ và tất cả các cam kết mới sẽ được xếp hàng đợi và áp dụng cho xây dựng.
  • Không có mật khẩu văn bản thuần túy nào tồn tại trong tập lệnh tự động