2008-09-03 24 views
5

Tôi đang sớm phát triển trên một ứng dụng web được xây dựng trong VS2008. Tôi có cả một máy tính để bàn (nơi mà hầu hết các công việc được thực hiện) và một máy tính xách tay (đối với tính di động không thường xuyên) mà tôi sử dụng AnkhSVN để giữ cho mã dự án được đồng bộ hóa. Cách tốt nhất để giữ cho cơ sở dữ liệu phát triển của tôi (SQL Server Express) được đồng bộ hóa là gì?Giữ cơ sở dữ liệu phát triển trong nhiều môi trường đồng bộ

Tôi có dự án cơ sở dữ liệu VS trong SVN chứa các tập lệnh tạo mà tôi tạo lại khi thay đổi lược đồ. Ý tưởng ban đầu là tái tạo DB bất cứ khi nào có gì đó thay đổi, nhưng nó nhanh chóng trở thành nỗi đau. Ngoài ra, tôi sẽ mất tất cả các hàng mẫu mà tôi đã nhập để đảm bảo dữ liệu đang được hiển thị chính xác.

Tôi đang xem xét việc đặt các tệp .MDF và .LDF dưới sự kiểm soát nguồn, nhưng tôi nghi ngờ SQL Server Express sẽ xử lý nó một cách duyên dáng nếu tôi cập nhật SVN và các tệp được rút ra từ bên dưới. . Gắn bó một vài tệp nhị phân lớn vào kiểm soát nguồn dường như không phải là một giải pháp thanh lịch, ngay cả khi nó chỉ là một cơ sở dữ liệu phát triển throwaway. Bất kỳ đề xuất?

Trả lời

3

Ngoài kịch bản CREATE của cơ sở dữ liệu, tại sao bạn không duy trì tập lệnh dữ liệu mẫu hoặc dữ liệu mẫu mặc định?

Đây là phương pháp chúng tôi đã thực hiện cho các phiên bản gia tăng của một ứng dụng mà chúng tôi đã duy trì trong hơn 2 năm nay và hoạt động rất tốt. Việc có tập lệnh dữ liệu mặc định cũng cho phép người thử nghiệm QA của bạn có thể tạo lại lỗi bằng cách sử dụng dữ liệu mà bạn cũng có?

Bạn cũng có thể muốn có một cái nhìn tại một câu hỏi tôi đã đăng một số thời gian trước đây:

Best tool for auto-generating SQL change scripts

3

Bạn có thể lưu trữ tệp sao lưu (.bak) của cơ sở dữ liệu của bạn thay vì .MDF & tệp .LDF.
Bạn có thể khôi phục db của bạn dễ dàng sử dụng kịch bản sau đây:

use master 
go 

if exists (select * from master.dbo.sysdatabases where name = 'your_db') 
begin 
    alter database your_db set SINGLE_USER with rollback IMMEDIATE 
    drop database your_db 
end 

restore database your_db 
from disk = 'path\to\your\bak\file' 
with move 'Name of dat file' to 'path\to\mdf\file', 
    move 'Name of log file' to 'path\to\ldf\file' 
go 

bạn có thể đặt nêu trên kịch bản trong tập tin văn bản restore.sql và gọi nó từ tập tin batch sử dụng lệnh sau:

osql -E -i restore.sql 

Bằng cách đó bạn có thể tạo tệp tập lệnh để tự động hóa toàn bộ quá trình:

  • Nhận bản sao lưu mới nhất từ ​​SVN kho lưu trữ hoặc bất kỳ kho phù hợp nào ge
  • Restore db hiện tại sử dụng bak tập tin
7

Có rõ ràng là một số cách tiếp cận này, vì vậy tôi sẽ liệt kê một số liên kết mà nên cung cấp một nền tảng tốt hơn để xây dựng trên. Đây là những liên kết mà tôi đã tham chiếu trong quá khứ khi cố gắng thu hút những người khác trên bandwagon.

Tuy nhiên, với tất cả điều đó đã nói, nếu bạn không nghĩ t mũ bạn đang cam kết đủ để thực hiện một số loại điều khiển phiên bản (bằng tay hoặc bán tự động), sau đó tôi khuyên bạn nên bạn hãy kiểm tra như sau:

bò Thánh ! Nói chuyện về làm cho cuộc sống dễ dàng! Tôi đã có một dự án thoát khỏi tôi và có nhiều người trong việc thực hiện các thay đổi lược đồ và phải giữ nhiều môi trường đồng bộ.Nó là tầm thường để chỉ các sản phẩm Red Gate tại hai cơ sở dữ liệu và thấy sự khác biệt và sau đó đồng bộ chúng lên.

1

Chúng tôi sử dụng kết hợp các bản sao lưu từ môi trường cao hơn.
Cũng như sử dụng ApexSql để xử lý thiết lập sơ đồ ban đầu.
Gần đây đã được sử dụng di chuyển Subsonic, như là một mã nguồn, kiểm soát, chạy qua CI cách để có được kịch bản thay đổi trong, đó cũng là "tarantino" dự án phát triển bởi headspring ra khỏi texas.

Hầu hết các cách tiếp cận này đặc biệt là phương pháp sau, an toàn để sử dụng trên đầu trang của hầu hết dữ liệu thử nghiệm. Tôi đặc biệt thích tự động cuối cùng 2 bởi vì tôi có thể thực hiện thay đổi, và lần sau khi ai đó nhận được mới nhất, họ chỉ cần chạy "updater" và họ được mở ra mới nhất.

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