2009-12-22 33 views
19

Hệ thống phần mềm tôi làm việc là hệ thống thanh toán y tế, số lượng lớn dữ liệu và bảng dữ liệu và các thủ tục được lưu trữ.Cách dễ dàng để triển khai các thay đổi cơ sở dữ liệu bằng SQL Server là gì?

Tôi đã đọc bài viết "12 Steps to Better Code" và trong trạng thái Thử nghiệm # 2: Bạn có thể tạo bản dựng trong một bước không?

Bây giờ tôi đã tự hỏi, điều này có nghĩa là triển khai xây dựng (để khách hàng có thể cập nhật triển khai của họ).

Bây giờ vấn đề chính tôi đang gặp phải, là cách bạn thực hiện cập nhật cơ sở dữ liệu một bước? Tại thời điểm hiện tại, khi chúng tôi thực hiện thay đổi đối với cơ sở dữ liệu, tất cả thay đổi được ghi lại và thêm vào tập lệnh cập nhật cơ sở dữ liệu, mã số phiên bản được đính kèm khi triển khai xây dựng khách hàng.

Có cách nào đơn giản hơn để thực hiện việc này không? Một số kịch bản hoặc ứng dụng ra khỏi đó có một "trước và sau" nhìn vào một lược đồ cơ sở dữ liệu và tạo ra một kịch bản cập nhật như tôi đã đề cập?

Hoặc đây có phải là cách mọi người làm điều đó, điều mà tôi thấy khó tin, nhưng đáng tin cậy.

Hệ thống tự động sẽ giảm lỗi và tăng tốc thời gian xây dựng triển khai đáng kể và tôi muốn biết cách thực hiện.

Trả lời

14

Có nhiều cấp độ phức tạp mà bạn có thể đi qua:

  • nếu bạn có cập nhật các kịch bản mà bạn tạo bằng tay, và chỉ là tìm kiếm một cách dễ dàng áp dụng những đến các máy chủ khác nhau, kiểm tra SSW SQL Deploy bởi SSW Consulting. Nó có thể xử lý kịch bản đó rất độc đáo

  • nếu bạn có xu hướng thực hiện nhiều cách tiếp cận khác về cơ sở dữ liệu, thì SQL Compare của Cổng đỏ (đã được đề cập) và SQL Packager tạo kết hợp tuyệt vời. Bạn có thể phân biệt cơ sở dữ liệu giữa cũ và mới và sau đó áp dụng các thay đổi trong gói đẹp - như một dự án EXE hoặc C#

  • nếu bạn muốn một cách tiếp cận thực sự, kết thúc tốt bit của một đường cong học tập), kiểm tra cách tiếp cận Innovartis' DBGhost. Đó là toàn bộ phương pháp/kỹ thuật cách xử lý phát triển cơ sở dữ liệu và cập nhật gia tăng. Nó rất mạnh mẽ và trông rất hứa hẹn - nhưng đó là một chút của một cách tiếp cận tất cả hoặc không có gì: hoặc bạn mua vào nó và sử dụng nó end-to-end, hoặc bạn không

Hy vọng điều này sẽ giúp một chút!

+2

Tôi đã sử dụng DbGhost trong 10 năm và nó luôn hoạt động. Sự hỗ trợ họ cung cấp là không ai sánh kịp. – penderi

+0

Đó là năm 2013 ngay bây giờ. Mọi cập nhật trên trường này? – ysrb

+1

@ysrb: vâng, có [Công cụ dữ liệu SQL Server] (http://msdn.microsoft.com/en-us/data/tools.aspx) bên trong Visual Studio 2012/2013 dường như đang tự động hóa rất nhiều tác vụ đó ra khỏi hộp (nếu bạn đang sử dụng Visual Studio, nghĩa là) –

2

Hãy xem bài đăng trên blog này. Tôi đã sử dụng kiểu kịch bản cập nhật đơn này từ bất kỳ phiên bản DB nào trên một vài dự án và nó hoạt động khá độc đáo.

http://blogs.msdn.com/danhardan/archive/2007/03/30/database-change-scripts-mambo-style.aspx

Bạn có thể phải tinh chỉnh các quy trình làm việc một chút để phù hợp với công việc của bạn và/hoặc cập nhật các tập tin sql mẫu, nhưng nhìn chung, tôi đã tìm thấy các ý tưởng để có một cách tiếp cận khá vững chắc để triển khai DB.

CHỈNH SỬA: Chỉ cần xây dựng cách tôi đã sử dụng kỹ thuật này. Về cơ bản, tất cả các kịch bản sửa đổi DB của tôi được đưa vào kiểm soát nguồn. Sau đó, như là một bước xây dựng bài viết trên hộp xây dựng, công cụ Mambo này được chạy trên thư mục tập lệnh để cuộn các tập lệnh vào một tập lệnh duy nhất được bao gồm bởi một giao dịch để cho phép khôi phục nếu có bất kỳ điều gì xấu đi. Sau đó, trình cài đặt đủ thông minh để tìm tập lệnh .sql để chạy với cơ sở dữ liệu hiện có.

Lý do hoạt động này là vì tập lệnh được cuộn lên kiểm tra để xem từng phần là một tập lệnh riêng lẻ đã chạy trên cơ sở dữ liệu mong muốn. Kết quả là, chỉ các tập lệnh mới nhất mới chạy. Thông báo trước cho điều này là khi một tập lệnh được kiểm tra vào kiểm soát nguồn và đã được triển khai, bạn không thể chỉnh sửa tập lệnh đó vì bảng theo dõi đã cho rằng tập lệnh đã được chạy. Đó là tốt cho các dự án tôi đã làm việc trên bởi vì chúng tôi chỉ cần thêm một kịch bản vào thư mục script.

Hy vọng tôi đang giải thích quá trình đủ tốt để hiểu. Nó thực sự không phức tạp và có thể khá hữu ích nếu cách tiếp cận có thể áp dụng cho dự án của bạn.

1

Trả lời câu hỏi đầu tiên của "Bây giờ tôi đã tự hỏi, điều này có nghĩa là triển khai xây dựng (để khách hàng có thể cập nhật triển khai của họ)?"

Tôi tin rằng Kiểm tra Joel # 2 không dành cho di chuyển triển khai cho sản phẩm, nhưng để liên tục continuios trong quá trình phát triển.

Đối với thay đổi cơ sở dữ liệu trong sản phẩm, tất cả chúng nên được thực hiện thông qua tập lệnh như một phần của quá trình giới thiệu giao dịch hoặc sau khi cơ sở dữ liệu đã được sao lưu.Bạn luôn muốn có thể điều hướng trở lại nếu có điều gì đó không thành công trong giới thiệu.

+0

(+1) câu trả lời hay. Để thực hiện điều này, bạn cần số phiên bản cho trạng thái cơ sở dữ liệu của bạn, một trạng thái cơ bản và các kịch bản lệnh để làm và hoàn tác các thay đổi đối với các đối tượng cơ sở dữ liệu. –

+0

Trong khi chúng không hoàn hảo, việc di chuyển đường ray thực hiện điều này khá tốt –

0

Có những ứng dụng đồng bộ hóa cơ sở dữ liệu, nhưng tôi nghĩ bạn nên làm những gì bạn đang làm. Viết một kịch bản để cập nhật cơ sở dữ liệu cho bạn khả năng xử lý lỗi và chạy các giao dịch. Đây được coi là thực hành tốt nhất.

2

redgate có công cụ SQL Compare để so sánh cơ sở dữ liệu và tạo tập lệnh để đồng bộ hóa. Chúng tôi đã từng sử dụng nó nhưng gần đây đã chuyển sang tập lệnh thủ công bằng cách sử dụng cùng một quy trình bạn mô tả. Sử dụng thủ công, hạt mịn, kịch bản với một số phiên bản duy nhất đã làm việc ra tốt.

Chúng tôi có các kịch bản nâng cấp được tích hợp vào các bài kiểm tra đơn vị để chúng được kiểm tra cùng với mã như một phần của tích hợp liên tục. Tôi nghĩ đây là một phần quan trọng để "xây dựng một bước."

1

Phát triển cơ sở dữ liệu của bạn dưới dạng tập hợp các bản vá phụ thuộc vào nhau. Sau đó, sử dụng một công cụ như https://github.com/LuvDaSun/sqlpatch (bởi tôi) để xây dựng một tệp sql để triển khai.

sqlpatch sẽ sắp xếp các bản vá theo thứ tự đúng và đảm bảo rằng mọi bản vá được thực thi chính xác một lần, ngay cả khi cùng một tập lệnh được chạy hai lần.

Chiến lược này có thể được sử dụng để triển khai cơ sở dữ liệu của bạn trong môi trường ci/cd. Điều này làm cho việc triển khai dễ dàng như việc đẩy tới một chi nhánh.

0

Microsoft tự giới thiệu Data-tier applications trong SQL 2012 dưới dạng tùy chọn miễn phí để triển khai và nâng cấp cơ sở dữ liệu.

Tôi sử dụng và thích công cụ này, bao gồm triển khai sản xuất.

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