2010-08-06 23 views
20

Tôi có 2 cơ sở dữ liệu có cấu trúc giống nhau, một trên máy cục bộ và một trên máy chủ của công ty. Mỗi khoảng thời gian xác định, dữ liệu từ DB địa phương phải được đồng bộ hóa với DB máy chủ.Làm thế nào để đồng bộ hóa cơ sở dữ liệu trong các máy chủ khác nhau trong SQL Server 2008?

Tôi có ý tưởng chung về cách thực hiện việc này - tạo tập lệnh bằng cách nào đó "hợp nhất" thông tin không có trên DB máy chủ, sau đó làm cho tập lệnh này chạy dưới dạng công việc đã lên lịch cho máy chủ. Tuy nhiên, vấn đề của tôi nằm trong thực tế là tôi không có kinh nghiệm với điều này.

SQL Server Management Studio có cung cấp cách dễ dàng để thực hiện việc này (một số loại trình hướng dẫn) và tạo loại tập lệnh này không? Đây có phải là thứ tôi sẽ phải xây dựng từ đầu?

Tôi đã thực hiện một số tìm kiếm cơ bản trên google và đi qua cụm từ 'Nhân rộng' nhưng tôi không hiểu đầy đủ. Tôi thà nghe một số đầu vào từ những người đã thực sự làm điều này hoặc những người tốt với giải thích loại công cụ này.

Cảm ơn.

Trả lời

12

Sao chép âm thanh như một lựa chọn tốt cho điều này, nhưng sẽ có một số chi phí (không phải là chi phí kỹ thuật, nhưng kiến ​​thức cần phải hỗ trợ nó).

Một tùy chọn SQL Server khác là SSIS. SSIS cung cấp các công cụ đồ họa để thiết kế những gì bạn đang cố gắng làm. Gói SSIS cũng có thể chạy các câu lệnh SQL, nếu thích hợp. Một gói SSIS có thể được bắt đầu, và do đó được lên lịch, từ một công việc SQL Server.

Bạn nên xem xét sự phức tạp của các quy tắc đồng bộ hóa khi chọn giải pháp của mình. Ví dụ, sẽ rất khó để giải quyết xung đột, chẳng hạn như một khóa trùng lặp, khi hợp nhất dữ liệu. Một kịch bản lệnh SQL có thể dễ dàng tạo ra nếu các quy tắc rất đơn giản. Tuy nhiên, các quy tắc xung đột phức tạp có thể khó thực hiện hơn trong một kịch bản (hoặc nhân rộng).

+1

Cách tôi thấy nó khá đơn giản, cấu trúc của các bảng sẽ không thay đổi chút nào và các vấn đề về khóa trùng lặp và tất cả các vấn đề đã được xử lý trước khi được chèn vào. Về cơ bản tất cả những gì tôi cần là lấy dữ liệu và đặt nó trên DB khác. –

+1

Nhân rộng âm thanh như một giải pháp tốt sau đó. Nhưng, bạn sẽ phải quyết định xem bạn có hài lòng với nó không. Chúc may mắn. – bobs

+1

Tôi đã thử nó với các cơ sở dữ liệu cục bộ khác nhau, và nó hoạt động tốt, công việc đủ đơn giản để tạo ra cho điều này và dữ liệu được đồng bộ đúng cách. Tôi đã sử dụng bản sao chụp nhanh mặc dù .. không thực sự chắc chắn nếu điều này có thể xấu? Ngoài ra, tôi cần phải thiết lập một thuê bao trên máy chủ DB và có các hành động DB địa phương như là nhà xuất bản, chính xác? –

8

SQL Server Management Studio tiếc là không cung cấp nhiều theo cách này.

Bạn nên có một cái nhìn nghiêm trọng tại một số các dịch vụ thương mại xuất sắc ngoài kia:

  • Red Gate Software SQL CompareSQL Data Compare - công cụ tuyệt vời, rất khuyến khích! Bạn thậm chí có thể so sánh một cơ sở dữ liệu trực tiếp với một bản sao lưu từ cơ sở dữ liệu khác và đồng bộ hóa dữ liệu - khá tiện lợi!

  • ApexSQL của SQL DiffSQL Data Diff

Họ tất cả chi phí tiền - nhưng nếu bạn nghiêm túc về nó, và bạn sử dụng chúng trong thói quen hàng ngày của bạn, họ đang trả tiền cho trong thời gian không ở tất cả - cũng có giá trị mỗi xu.

Tùy chọn "miễn phí" duy nhất bạn có trong SQL Server 2008 là tạo liên kết giữa hai máy chủ và sau đó sử dụng một cái gì đó như MERGE statement (mới trong SQL Server 2008) để chuyển dữ liệu. Điều đó không có tác dụng đối với các thay đổi về cấu trúc và chỉ giới hạn trong việc kết nối trực tiếp giữa hai máy chủ.

+1

Có, tôi sợ rằng (hiện tại, ít nhất) giải pháp tuyên bố MERGE là con đường tôi cần thực hiện. Tôi sẽ xem xét ví dụ đó và một số người khác và quay lại ya. –

4

gì bạn muốn là Peer-to-Peer Transactional Replication, cho phép dữ liệu được cập nhật ở cả hai cơ sở dữ liệu chưa giữ chúng trong đồng bộ thông qua việc kết hợp với tiếp giáp thay đổi. Đây là các đóng phù hợp với những gì bạn muốn, nhưng là một lựa chọn khá tốn kém (yêu cầu Enterprise Edition trên cả hai trang). Một lựa chọn khác là Bidirectional Transactional Replication, nhưng vì điều này cũng đòi hỏi hai giấy phép EE, tôi nói rằng peer-to-peer dễ triển khai hơn cho cùng một số tiền.

Tùy chọn thân thiện với ngân sách hơn là Updatable Subscriptions for Transactional Replication, nhưng đăng ký có thể cập nhật sẽ không được dùng nữa và bạn đặt cược tiền của mình vào một con ngựa mất.

Một tùy chọn khác là sử dụng Merge Replication. Và cuối cùng, đối với các trường hợp khi cơ sở dữ liệu 'cục bộ' khá di động thì có Sync Framework.

Lưu ý rằng tất cả các tùy chọn này yêu cầu một số cấu hình và hợp tác từ DB máy chủ của Công ty.

+2

Tôi đoán chúng tôi có những cách giải thích khác nhau về các yêu cầu của OP. Tôi không thấy một nhu cầu hai chiều dựa trên "dữ liệu từ DB địa phương nên được đồng bộ hóa với DB máy chủ." Điều đó nghe có vẻ một cách (từ địa phương đến máy chủ) với tôi. –

0

Có một số công cụ tuyệt vời của bên thứ ba trên mạng. Đối với tôi, xSQL Data Compare luôn thực hiện thủ thuật. Và bởi vì các so sánh có khả năng thay đổi cao, nó phù hợp cho hầu hết mọi dữ liệu so sánh hoặc kịch bản đồng bộ hóa dữ liệu. Hi vọng điêu nay co ich!

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