2012-05-03 44 views
5

Tôi có một ứng dụng C# .net đã được phân tách riêng cho nhiều khách hàng, đôi khi chúng tôi thêm một số tính năng mới hoặc sửa một số lỗi và thường xuyên thực hiện các thay đổi trong DB. Tôi sử dụng phương pháp nhấp một lần triển khai để cập nhật exe cho các máy khách của tôi. SQL server instance đã được cài đặt trên hệ thống của họ.Thực hiện SQL Script với .net thực thi

Tôi muốn biết làm thế nào tôi có thể cập nhật cơ sở dữ liệu sql của họ với mỗi lần cập nhật exe.

Hãy nhớ rằng điều này có thể là khách hàng đang làm việc trên phiên bản 2 và không bao giờ được cập nhật lên phiên bản 3 nhưng khi phiên bản 4 được phát hành, thì anh ấy cập nhật ứng dụng. Trong trường hợp này, tôi cần thực thi hai tập lệnh trên cơ sở dữ liệu của mình. Một cho phiên bản 3 và khác cho phiên bản hiện tại mà là 4.

Cảm ơn

Trả lời

2

Giả sử bạn có một thủ tục/tập lệnh được lưu trữ có thể cập nhật phiên bản này sang phiên bản khác và giả sử bạn không thể tải bất kỳ exe nào khác sẽ chạy nó, tại sao bạn không bao gồm một cuộc gọi để chạy nó ngay từ đầu của phiên bản mới? Có một kiểm tra khi tải phần mềm để xem liệu họ có đang sử dụng đúng phiên bản của cơ sở dữ liệu hay không, nếu không, hãy cập nhật nó. Để xử lý các vấn đề như đi từ phiên bản 2 lên đến 4, chỉ cần đảm bảo rằng cơ sở dữ liệu tự theo dõi phiên bản hiện tại của nó.

+0

Vì vậy, tôi cần giữ tất cả các tập lệnh của cơ sở dữ liệu trong tệp thực thi của mình bất cứ khi nào người dùng cập nhật exe, tập lệnh tương ứng của họ sẽ có sẵn. – MegaMind

+0

có, bạn phải thêm một phiên bản cờ trong cơ sở dữ liệu quá :) – ykatchou

0

Bạn có thể thử sqlcmd và chỉ cần gọi exe từ bên trong bạn ứng dụng với các bản cập nhật DB.

0

Đây là kịch bản được giải quyết tốt nhất bằng cách sử dụng "Di chuyển cơ sở dữ liệu". Có một số công cụ có sẵn trong hệ sinh thái .net để hỗ trợ bạn. Một số các công cụ đi kèm với một Á hậu riêng biệt, trong khi những công cụ khác có thể được biên dịch thành một hội đồng .net mà bạn có thể đưa vào dự án của mình.

Ví dụ:

0

tôi đã tạo ra hai thành phần để giải quyết vấn đề này:

1.

Một WinForms ứng dụng để phân tích một SQL DB nhất định cũng như một thư mục Giải pháp SQL chứa các file scruipt. Sau đó nó tính toán các tệp kịch bản lệnh cho các đối tượng SQL và cho phép tôi xây dựng một tệp "Manifest.xml" chứa một lệnh thực thi cho các tệp kịch bản lệnh khác nhau.

Tệp tập lệnh cho các bảng chứa hướng dẫn mỗi phiên bản về việc nâng cấp cấu trúc bảng.

Trình tạo sau đó sao chép tệp tập lệnh có liên quan cùng với tệp kê khai vào một vị trí nhất định. Thông thường tôi sao chép những người cùng với các ứng dụng của tôi nếu tôi không lo lắng về tình trạng quá tải thư mục ứng dụng của tôi. Nếu không, tôi nén chúng vào một mật khẩu bảo vệ 7-zip.

2.

Một ứng dụng dòng lệnh mở gói (nếu cần) và thực thi tệp kê khai. Công việc thực tế được thực hiện trong một thư viện lớp riêng biệt có thể được tích hợp trong các ứng dụng của tôi.

Sau đó, trong ứng dụng của tôi bất cứ khi nào appversion> dbversion tôi chạy nâng cấp.

Trong các thiết lập nơi chỉ có dàn dựng và thiết lập sản xuất tại một khách hàng duy nhất và thường không có ứng dụng nào liên quan, tôi sẽ sử dụng ứng dụng CLI độc lập theo cách thủ công. Đó là một cách dễ dàng để cập nhật, đặc biệt nếu bạn sửa đổi 20 lượt xem và REALLY không cảm thấy như sao chép/dán tất cả vào SQL Mgt Studio: p

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