Cách hiệu quả nhất để sao chép một thể hiện trên SQL 2008 là gì?


14

Chúng tôi đã có một cá thể cơ sở dữ liệu đơn giản với chỉ đủ dữ liệu trong cơ sở dữ liệu để giữ cho nó hữu ích và chúng tôi có thể sử dụng nó cho mục đích trình diễn và tôi muốn đặt một bản sao của nó vào máy tính xách tay của mình để tôi có thể sử dụng nó cho nhà phát triển khi Tôi không ở văn phòng. (Các phiên bản cơ sở dữ liệu dev thông thường là khoảng 150 GB, phiên bản này là 3 GB)

Phương pháp lặp lại / scriptable nhất để tạo lại cá thể trên máy tính xách tay của tôi là gì? Tôi chắc chắn rằng tôi sẽ phải chạy lại trình cài đặt cho SqlServer2008 và thiết lập một cá thể, nhưng sau đó ... Tôi nghĩ rằng tôi muốn có thể bỏ cơ sở dữ liệu cũ của mình mỗi tháng hoặc lâu hơn sao chép tất cả nội dung mới vào máy tính xách tay của tôi, vì cá thể của tôi sẽ không thay đổi trên một hệ thống demo hoặc máy tính xách tay. Nhưng các cơ sở dữ liệu sẽ tự cập nhật, với các làm mới trên các sprocs và tương tự.

Tôi đã xem xét kịch bản tất cả "thả tệp cơ sở dữ liệu; thêm tệp cơ sở dữ liệu {path}" và giữ chúng trong một tệp bó có thể chạy được của một số loại và sau đó tôi có thể "thả, xóa, sao chép, thêm" nhưng tự hỏi nếu có là một cách tốt hơn so với chỉ xcopy và lô?

Tôi đang cố gắng làm điều này với giá rẻ (không phải chúng tôi luôn cố gắng và làm mọi thứ với giá rẻ) vì vậy tôi không đặc biệt quan tâm đến các sản phẩm RedGate hoặc tương tự. Tôi muốn một cái gì đó tôi có thể dễ dàng duy trì trong một trình soạn thảo văn bản cho chính mình.


nó là cơ sở dữ liệu đơn hoặc máy chủ sql với nhiều hơn một cơ sở dữ liệu? Tôi giả sử bạn đã cài đặt máy chủ sql trong máy tính xách tay và máy phát triển và bạn có một cơ sở dữ liệu, trong trường hợp đó bạn có thể sử dụng sao lưu và khôi phục. Sao lưu máy phát triển db, sao chép nó vào máy tính xách tay và khôi phục, ngược lại ... điều đó có hợp lý không?
CoderHawk

Có phải SQL Server Express Edition không? hay Tiêu chuẩn? SSIS là một lựa chọn tốt cho các tình huống như thế này, thật không may, nó không có sẵn trong các phiên bản Express và Web.
CoderHawk

Xin lỗi @Sandy ~ Đó là SQL Dev 2008. Tôi đã có quyền truy cập vào hầu hết mọi thứ mà bạn có thể đoán tại tho, trên tài khoản của MSDN.
jcolebrand

Tiêu đề câu hỏi hơi khó hiểu "Cách hiệu quả nhất để sao chép một | thể hiện | trên SQL 2008 là gì?" - Ví dụ hay cơ sở dữ liệu?
CoderHawk

@Sandy ~ "Sơ thẩm" ... thực sự, tôi muốn toàn bộ.
jcolebrand

Câu trả lời:


4

Bạn đã đánh vào đầu đinh: sao chép các tập tin. Tôi đã sử dụng điều này để có hiệu quả tốt.

Tôi muốn nói rằng bạn phải xác định "giá rẻ" để bao gồm đầu tư thời gian để chuẩn bị một giải pháp không liên quan đến xcopy


3

Umm, không chắc điều này có giúp ích gì không, nhưng chúng tôi đang sử dụng một tập lệnh để "dọn dẹp" cơ sở dữ liệu sản xuất và chuẩn bị cho việc lạm dụng phát triển. Chúng tôi đang lấy tất cả các bảng lớn có cột thời gian và chúng tôi sẽ xây dựng lại bảng chỉ với năm cuối cùng của dữ liệu. Từ một db đầy đủ khoảng 200 GB, chúng tôi nhận được khoảng 40 GB db để phát triển. Chủ yếu chúng tôi đang tạo các tập lệnh động để tạo các tệp bcp cho mỗi bảng, tạo lại bảng (bao gồm mọi ràng buộc liên quan) và sau đó chỉ chèn hàng loạt dữ liệu vào năm ngoái.

Có thể có các công cụ để làm điều này, nhưng cửa hàng của chúng tôi rẻ đi :-).


Vâng, chúng tôi đi theo lộ trình BCP cho rất nhiều thứ, vì vậy tôi hiểu những gì bạn đang nói và cắt ngắn một số thứ này sẽ tốt, nhưng tôi đã có khoảng 3 GB dữ liệu tôi cần, vì vậy tôi không thực sự tìm kiếm để thêm nhiều hơn ở đó. Tôi chỉ muốn sao chép toàn bộ ví dụ và hình dung có một cách để tiếp tục thực hiện nó nhiều lần. Nhưng nếu không, tôi nghĩ rằng tôi đang ở cùng một chiến thuật như những gì bạn đang nói, chỉ là chuyện nhỏ hơn.
jcolebrand

Vì vậy, lặp lại tất cả các bước trong lô :). SQL có các tham số bó và bạn có thể kết hợp các tệp bó với các tệp sql và có được một gói đẹp. Tôi đã tạo một gói Nhật ký vận chuyển (câm) tùy chỉnh đang hoạt động trên các miền khác nhau và tất cả việc chuẩn bị db được thực hiện trong các tệp cmd / sql. Bạn chỉ có thể tạo một cá thể được đặt tên để sử dụng và bắt đầu / dừng dịch vụ, khôi phục db, dọn dẹp, chuẩn bị, sao lưu và gửi đến một thư mục cụ thể. Có thể một số công việc có thể được thực hiện nhanh hơn trong powershell .. nhưng tôi không quen với nó.
Mary

vâng đó là ý tưởng;)
jcolebrand

@jcolebrand - Có lẽ một công cụ như Norton Ghost hoặc Clonezilla sẽ giúp ích? Bạn sẽ cần nó để sao chép các thư mục sao lưu prod ở đâu đó trên sân chơi của bạn, sau đó quay lại làm tất cả những điều thú vị (khôi phục..trim ... vv). Bạn không cần phải kịch bản các hành động sao chép và bạn sẽ chỉ xử lý phần sql :).
Mary

oooooh có thể hữu ích. Con đường mới xem xét.
jcolebrand

0

Cách dễ nhất để nâng cấp lược đồ của bạn để phù hợp với các hệ thống đó là sử dụng một công cụ như Red Gate SQL So sánh hoặc Trình quản lý thay đổi DB của Embarcadero.

Có một loạt các công cụ khác có sẵn có thể thực hiện so sánh lược đồ tương tự và thậm chí cung cấp cho bạn DDL để nâng cấp lược đồ cơ sở dữ liệu của bạn.

Tùy chọn

  1. Sử dụng công cụ của bên thứ 3
  2. Sao lưu và khôi phục cơ sở dữ liệu - bạn có thể cần khôi phục lại một trường hợp dàn để xóa dữ liệu (do hạn chế về không gian trên máy tính xách tay)
  3. Viết tập lệnh cơ sở dữ liệu của riêng bạn bằng SMO và chỉ cần tạo một công việc viết ra các đối tượng, sau đó tạo lại lược đồ của bạn mỗi tháng / lần bạn cần, sau đó sử dụng SSIS để tải dữ liệu vào các đối tượng mới.

Làm thế nào để "Sao lưu và khôi phục cơ sở dữ liệu" hoạt động cho ví dụ? Tôi muốn giữ dữ liệu trong các bảng này vì đây là bộ dữ liệu đầy đủ, chỉ nhỏ hơn sản xuất.
jcolebrand

SSIS có thể sẽ cho tôi làm những gì tôi cần nhưng tôi không biết đủ về điều đó. Tôi nên điều tra thêm.
jcolebrand

@jcolebrand - Tôi đã đề xuất khôi phục sao lưu, bằng cách đơn giản là phải xem xét cách di chuyển dữ liệu từ hệ thống trực tiếp của bạn sang hệ thống demo khi bạn thực hiện các công việc như thêm cột. Tuy nhiên, điều này không có nhược điểm yêu cầu khôi phục sau đó lọc dữ liệu trước khi sao lưu và khôi phục / tách và đính kèm.
johndacostaa
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.