2010-06-29 43 views
12

Tôi đã làm việc trên một dự án và nhận được nó thông qua giai đoạn đầu tiên. Tuy nhiên, các yêu cầu đã kết thúc thay đổi và tôi phải thêm các bảng mới và làm lại một số tham chiếu khóa foriegn trong DB.Làm cách nào để bạn di chuyển các thay đổi cơ sở dữ liệu Dev sang cơ sở dữ liệu sản xuất?

Vấn đề tôi gặp phải là do thiếu hiểu biết về việc thực hiện loại thay đổi này cho cơ sở dữ liệu sản xuất sau khi tôi hoàn thành phát triển trên cơ sở dữ liệu dev.

Một số chiến lược để di chuyển thay đổi giản đồ cơ sở dữ liệu và duy trì dữ liệu trong cơ sở dữ liệu là gì?

Về tầm hiểu biết của tôi về việc này, hãy mở Sql Server Management Studio và bắt đầu thêm bảng theo cách thủ công. Tôi biết điều này có lẽ là một cách xấu để làm điều đó vì vậy tìm cách để làm điều đó đúng cách trong khi nhận ra tôi có thể bắt đầu sai.

Trả lời

2

Tôi thường sử dụng một cái gì đó như là SQL Server Publishing Wizard để tạo các kịch bản lệnh SQL về các thay đổi. Đó là một cách tiếp cận khá đơn giản và dễ dàng. Nhược điểm chính của công cụ đó là sản xuất sẽ thả và tạo lại các bảng không thay đổi nhưng được sử dụng bởi các thủ tục đã thay đổi (và tôi không thể hiểu tại sao), do đó, có một số lao động thủ công liên quan đến kịch bản và xóa những thứ không cần phải ở đó.

Lưu ý mà bạn không cần tải xuống và cài đặt công cụ này; bạn có thể khởi chạy nó từ bên trong Visual Studio. Nhấp chuột phải vào kết nối trong Server Explorer và chọn "Publish to Provider" trong menu ngữ cảnh.

+0

Điều này có vẻ như là một lựa chọn tốt vì nó cho phép bạn thực hiện nhiều thay đổi gia tăng và đảm bảo bạn biết điều gì đang diễn ra. – percent20

+0

Tôi đã đánh dấu câu trả lời này là câu trả lời vì đây là cách tôi đã làm nó ngày hôm nay trên một bài kiểm tra nhỏ và có vẻ như là dễ nhất. – percent20

+6

Tôi sẽ lo lắng về bất kỳ công cụ nào muốn thả và tạo lại các bảng trên sản phẩm khi chúng đã có dữ liệu. – HLGEM

1

Có một số công cụ có sẵn để trợ giúp bạn.

Nếu bạn có Visual Studio Team phiên bản, rà soát các dự án cơ sở dữ liệu (aka DataDude aka Visual Studio Team cho cơ sở dữ liệu Chuyên) See herehere

Nó cho phép bạn tạo ra một mô hình từ dev cơ sở dữ liệu/hội nhập và sau đó (ví nhiều, nhưng không phải tất cả các trường hợp) tự động tạo tập lệnh cập nhật cơ sở dữ liệu prod của bạn với những thay đổi bạn đã thực hiện đối với dev/integration.

Đối với VS 2008, hãy đảm bảo bạn nhận được bản vá GDR2.

+0

Điều này có vẻ tốt, nhưng nếu bạn không có Ultimate hoặc Team Edition thì một số điều sẽ làm cho điều này phù hợp hơn với tôi không giống như Schema Compare hoặc tôi thiếu gì đó? – percent20

+0

Tôi tin rằng các tính năng quan trọng - So sánh lược đồ - chỉ có trong phiên bản Team hoặc Ultimate. Tôi rất thích công cụ này. Có những công cụ tương tự từ các nhà cung cấp khác - Redgate - là tốt. –

3

Bạn phải có thứ gọi là "KIT". Rõ ràng, nếu bạn đang duy trì một số loại điều khiển nguồn, tất cả các tập lệnh cho các thay đổi mà bạn thực hiện trong môi trường phát triển sẽ được duy trì trong công cụ cấu hình điều khiển nguồn.

Khi bạn đã hoàn thành tất cả các tập lệnh/thay đổi mà bạn cho là được chứng nhận chuyển sang môi trường cao hơn kế tiếp. Chuẩn bị bộ công cụ với tất cả các kịch bản này trong các thư mục (lý tưởng được phân loại là Procedures, Tables, Functions, Bootstraps) Và sau đó có một tập tin batch có thể thực thi các script này trong bộ theo thứ tự cụ thể bằng tiện ích dòng lệnh OSQL.

Có các tệp lô riêng biệt cho UAT/Dàn dựng/sản xuất để bạn có thể chỉ cần nhấp đúp vào tệp lô để thực thi bộ trong máy chủ phù hợp. Kiểm tra các tùy chọn OSQL.

Bằng cách này, tất cả các môi trường của bạn đều được đồng bộ hóa!

+0

Điều này dường như có một chi phí cao của bạn phải viết tất cả các kịch bản cá nhân. – percent20

+0

Phải! Tôi không biết công cụ kiểm soát nguồn mà bạn đang sử dụng là gì. Vì vậy, tôi đã có thể đi với câu trả lời chung chung thate sẽ phù hợp với bất kỳ tình hình nhưng sau đó bạn có thể thu hẹp các tùy chọn của bạn và làm cho nó dễ dàng hơn. – Baaju

+0

@ percent20. Nó không mất nhiều thời gian (nếu có) để viết các kịch bản nếu bạn làm điều đó khi bạn đi thay vì sử dụng GUI.Bạn chỉ nghĩ rằng nó là tốn thời gian bởi vì bạn không thực hành khi làm nó và bạn cố gắng làm một bó tại một thời điểm. Và trong một số cơ sở dữ liệu (SQL Server cho một) GUI không làm thay đổi hiệu quả và không nên sử dụng. Để thay đổi một bảng ví dụ, nó sẽ tạo ra một bảng tạm thời trong cấu trúc mới, sao chép tất cả dữ liệu (yep tất cả 100.000.000 bản ghi) vào nó rồi thả bảng cũ và đổi tên bảng mới thay vì sử dụng ALTER TABLE nhanh hơn nhiều. – HLGEM

0

Chúng tôi đã tìm thấy cách tốt nhất để thúc đẩy thay đổi này là để điều trị cơ sở dữ liệu thay đổi như mã. Tất cả các thay đổi đều có trong tập lệnh, chúng nằm trong kiểm soát nguồn và chúng là một phần của phiên bản.Không có gì là bao giờ trong bất kỳ trường hợp đẩy để sản xuất mà không phải là kịch bản và trong kiểm soát nguồn. Bằng cách đó bạn không vô tình đẩy các thay đổi trong dev, nhưng chưa sẵn sàng để được đẩy để sản xuất. Hơn nữa, bạn có thể khôi phục dữ liệu prod vào hộp dev và chạy lại tất cả các tập lệnh chưa được đẩy và bạn có dữ liệu mới và tất cả các công việc dev được bảo tồn. Điều này cũng hoạt động tuyệt vời khi bạn có các giá trị tra cứu cho các bảng đang sắp xếp mà bạn không muốn đẩy lên prod cho đến khi những thứ khác cũng di chuyển. Script chèn và đặt nó với phần còn lại của mã cho phiên bản.

Thật tuyệt khi sử dụng những công cụ đó để so sánh để xem có điều gì đó bị bỏ sót trong tập lệnh hay không, nhưng tôi KHÔNG BAO GIỜ dựa vào chúng một mình. Quá nhiều nguy cơ đẩy một cái gì đó "chưa sẵn sàng cho thời gian đầu" để sản xuất.

+0

Tôi nghĩ rằng lý do lớn tôi thích các công cụ là nó làm rất nhiều tối ưu hóa nhỏ mà có vẻ như họ nên được thực hiện, nhưng tôi không biết, hoặc làm thế nào để, làm cho họ. Tuy nhiên, dành thời gian để tìm hiểu và viết ra các kịch bản sau đó từ từ theo thời gian làm việc trên những gì để thêm bên cạnh những thứ cơ bản có lẽ sẽ là một điều thông minh để làm trong thời gian dài. – percent20

2

So sánh SQL và Cổng dữ liệu SQL Red So sánh tất cả các cách. Kể từ khi công ty của tôi mua nó, nó đã tiết kiệm cho tôi rất nhiều thời gian dàn dựng cơ sở dữ liệu của chúng tôi từ DEV đến TEST để CHẤP NHẬN để SẢN XUẤT.

Và bạn cũng có thể đồng bộ hóa với thư mục tập lệnh để dễ dàng tích hợp trong hệ thống kiểm soát nguồn.

http://www.red-gate.com

5

Đối với việc duy trì sơ đồ thay đổi bạn có thể sử dụng ApexSQL Diff, một sự so sánh lược đồ và đồng bộ hóa công cụ SQL Server và SQL Azure, và để duy trì dữ liệu trong cơ sở dữ liệu, bạn có thể sử dụng ApexSQL Data Diff, một SQL Server và SQL Azure so sánh dữ liệu và công cụ đồng bộ hóa.

Hope this helps

Disclaimer: Tôi làm việc cho ApexSQL như một kỹ sư Hỗ trợ

0

Một công cụ thiết kế cơ sở dữ liệu tốt (ví dụ như Sybase PowerDesigner) sẽ cho phép bạn tạo ra những thay đổi Thiết kế mô hình dữ liệu , sau đó tạo mã để triển khai các thay đổi đó. Sau đó, bạn có thể lưu trữ và chạy mã như bạn chọn. Công cụ này cũng có thể thực hiện kỹ thuật đảo ngược khi bạn kế thừa một cơ sở dữ liệu mà bạn không xây dựng.

Tìm tất cả các thay đổi giữa phát triển và sản xuất thường khó khăn ngay cả trong môi trường được tổ chức và có tài liệu tốt. Idera có một công cụ cho SQL Server sẽ phát hiện sự khác biệt về cấu trúc giữa cơ sở dữ liệu phát triển và sản xuất của bạn và một công cụ khác phát hiện những thay đổi trong dữ liệu. Trong thực tế, tôi thường sử dụng chúng để đi theo hướng khác và đồng bộ hóa phát triển với sản xuất để bắt đầu một dự án mới.

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