Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Phiên bản cơ sở dữ liệu SQL Server

Martin Fowler đã viết bài báo yêu thích của tôi về chủ đề này, http://martinfowler.com/articles/evodb.html. Tôi chọn không đặt bãi chứa giản đồ dưới quyền kiểm soát phiên bản là alumb và những người khác đề xuất vì tôi muốn một cách dễ dàng để nâng cấp cơ sở dữ liệu sản xuất của mình.

Đối với một ứng dụng web mà tôi sẽ có một phiên bản cơ sở dữ liệu sản xuất duy nhất, tôi sử dụng hai kỹ thuật:

Tập lệnh nâng cấp cơ sở dữ liệu

Tập lệnh nâng cấp cơ sở dữ liệu trình tự có chứa DDL cần thiết để di chuyển lược đồ từ phiên bản N sang N + 1. (Những thứ này có trong hệ thống kiểm soát phiên bản của bạn.) Một bảng _version_history_, giống như

create table VersionHistory (
    Version int primary key,
    UpgradeStart datetime not null,
    UpgradeEnd datetime
    );

nhận mục nhập mới mỗi khi tập lệnh nâng cấp chạy tương ứng với phiên bản mới.

Điều này đảm bảo rằng thật dễ dàng để xem phiên bản nào của lược đồ cơ sở dữ liệu tồn tại và các tập lệnh nâng cấp cơ sở dữ liệu chỉ được chạy một lần. Một lần nữa, đây là không kết xuất cơ sở dữ liệu. Thay vào đó, mỗi tập lệnh đại diện cho các thay đổi cần thiết để chuyển từ phiên bản này sang phiên bản tiếp theo. Chúng là tập lệnh mà bạn áp dụng cho cơ sở dữ liệu sản xuất của mình để "nâng cấp" nó.

Đồng bộ hóa hộp cát dành cho nhà phát triển

  1. Một tập lệnh để sao lưu, khử trùng và thu nhỏ cơ sở dữ liệu sản xuất. Chạy phần này sau mỗi lần nâng cấp lên DB sản xuất.
  2. Một tập lệnh để khôi phục (và chỉnh sửa, nếu cần) bản sao lưu trên máy trạm của nhà phát triển. Mỗi nhà phát triển chạy tập lệnh này sau mỗi lần nâng cấp lên DB sản xuất.

Lưu ý:Các bài kiểm tra tự động của tôi chạy trên cơ sở dữ liệu đúng với lược đồ nhưng trống, vì vậy lời khuyên này sẽ không hoàn toàn phù hợp với nhu cầu của bạn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Có thể sử dụng SqlGeography với Linq to Sql không?

  2. Tách các giá trị được phân tách trong một cột SQL thành nhiều hàng

  3. DATETIMEFROMPARTS () Ví dụ trong SQL Server (T-SQL)

  4. Có "HOẶC" trong điều kiện INNER JOIN có phải là một ý tưởng tồi không?

  5. Kết nối JDBC không thành công, lỗi:kết nối TCP / IP với máy chủ không thành công