Tôi có thể xuất kế hoạch bảo trì mà không cần sử dụng Dịch vụ tích hợp không?


12

Tôi đang cố gắng xuất một gói bảo trì đơn giản từ một phiên bản SQL Server.

Tôi muốn kiểm tra xuất thành kiểm soát nguồn và áp dụng kế hoạch bảo trì đã xuất cho các trường hợp giống nhau về mặt chức năng.

StackOverflowSQL Server Newbie khuyên bạn nên sử dụng Dịch vụ tích hợp để xuất kế hoạch bảo trì.

Khi tôi cố gắng kết nối với Dịch vụ tích hợp trên mục tiêu Xuất, tôi nhận được lỗi sau:

Kết nối với dịch vụ Tích hợp trên máy tính "WEBSERVER" không thành công với lỗi sau: Dịch vụ được chỉ định không tồn tại dưới dạng dịch vụ được cài đặt.

Chúng tôi đã chọn tắt Dịch vụ tích hợp trên WEBSERVER vì chúng tôi chỉ sử dụng hộp này để phục vụ dữ liệu cho các ứng dụng của người tiêu dùng. Tất cả dữ liệu trên WEBSERVER được sao chép từ phiên bản phụ trợ. Dịch vụ tích hợp được sử dụng nhiều để xử lý dữ liệu trên phiên bản phụ trợ.

Có cách nào để ghi lại kế hoạch bảo trì mà không sử dụng Dịch vụ Tích hợp không? Microsoft có hỗ trợ không?

Câu trả lời:


10

Các gói bảo trì được lưu trữ trong msdb.dbo.sysssispackages như mọi gói SSIS khác được lưu trữ cho SQL Server. Tôi có một bài viết hữu ích về Trích xuất gói SSIS từ MSDB để khắc phục những gì khiến bạn cảm thấy khó chịu.


Điều này chỉ hoạt động nếu bạn đã cài đặt SSIS đầy đủ, bởi vì dtutil- cái này được xây dựng tròn - về cơ bản bị vô hiệu hóa, mặc dù nó có mặt. Một số phiên bản của SQL Server (như Phiên bản web) không cho phép SSIS được cài đặt đầy đủ, mặc dù về cơ bản các Gói bảo trì sử dụng hầu hết tất cả các chức năng của SSIS. (Tuy nhiên, có một hack để có được vòng này, giả sử bạn có hai phiên bản của SQL Server, một trong số đó không được tập tễnh -. Xem câu trả lời của tôi dưới đây)
MikeBeaton

3

Có một cách để làm điều này.

Giả sử, giống như OP, bạn có hai phiên bản SQL Server, một trong số đó đã cài đặt SSIS và một trong số đó không (có thể không thể, ví dụ: nếu đó là SQL Server Web Edition).

Viết một thủ tục được lưu trữ để sao chép các hàng của kế hoạch bảo trì người dùng từ máy chủ bị rối sang máy chủ không bị rối. Các hàng có liên quan là:

SELECT name 
FROM msdb.dbo.sysssispackages 
WHERE packagetype = 6

Bạn sẽ cần phải viết SP này để nó xóa bất kỳ hàng nào có khớp idđầu tiên, sau đó chèn các phiên bản mới nhất (hoặc cách tiếp cận tương tự, ví dụ: UPDATEkhớp ids, sau đó INSERTthiếu ids). Và bạn sẽ cần phải thiết lập một máy chủ được liên kết ở một hoặc một bên, để bạn có thể viết SQL giải quyết cả hai máy chủ.

Đó là, thực sự, sau đó bạn có thể gọi nó thường xuyên ... từ một kế hoạch bảo trì, chẳng hạn ... và sao lưu tất cả các kế hoạch bảo trì ở phía không bị rối loạn.

Đây là một hack lớn, tất nhiên, nhưng nó thực sự hoạt động. (Tôi sẽ tưởng tượng rằng điều khá quan trọng là số phiên bản của SQL Server giống nhau ở cả hai bên, vì dữ liệu msdb.dbo.sysssispackagestương thích giữa các phiên bản máy chủ khác nhau như thực tế.)

Dĩ nhiên, bạn luôn có thể sao lưu trực tiếp các hàng có liên quan từ bảng cơ sở dữ liệu SSIS. Dù sao thì nó cũng sẽ hoạt động - như một câu trả lời đầy đủ cho câu hỏi ban đầu. Như đã nêu, điều này không liên quan gì đến SSIS giả định trước - nó chỉ giả định trước các Kế hoạch Bảo trì!

Vì vậy, đó là một phương pháp nhẹ, được hỗ trợ, hoạt động mà không cần SSIS ở bất cứ đâu trên hệ thống. Ưu điểm của phương pháp hack phức tạp hơn, phức tạp hơn ở trên là nó cung cấp các gói được xuất theo định dạng chuẩn, không chỉ là các hàng dữ liệu trần; Vì vậy, tôi nghĩ rằng nhiều khả năng có thể nhập vào một phiên bản SQL Server khác, sau này.


0

Có một cái nhìn tại:

Làm cách nào để chuyển (Sao chép) Gói bảo trì từ máy chủ này sang máy chủ khác? bởi Saletanth Bandarla

Để diễn giải và tóm tắt:

  1. Trong SSMS, thay vì kết nối với "Cơ sở dữ liệu ...", hãy kết nối với "Dịch vụ tích hợp ...", cho cùng một tên máy chủ.

  2. Điều hướng đến 'Gói được lưu trữ / MSDB / Gói bảo trì'.

  3. Có tất cả các kế hoạch bảo trì của bạn. Nhấp chuột phải vào chúng để xuất chúng.


0

Tôi đã đấu tranh với vấn đề tương tự CHÍNH XÁC. Đây là nơi cất cánh chính:

Không có dịch vụ tích hợp cần thiết trên WEBSERVER của bạn. Một cách được ghi lại là sử dụng DTUTIL. Chỉ cần sử dụng BẤT K SQL Máy chủ SQL (ngay cả phiên bản dành cho nhà phát triển miễn phí với tất cả các tính năng Doanh nghiệp) đã cài đặt Dịch vụ Tích hợp để sao chép Gói Bảo trì Máy chủ SQL từ nguồn sang mục tiêu - ngay cả khi đó không phải là nguồn hoặc đích của gói như trong Ví dụ A.

Ví dụ A: Chạy DTUTIL trên SQL Server MySSISServerA để sao chép Gói bảo trì SQL từ MySourceServerB sang MyDestServerC .

DTUTIL /SQL "Maintenance Plans\Nightly Maintenance" /copy  sql;"Maintenance Plans\Nightly Maintenance" /sourceserver MySourceServerB /destserver MyDestServerC /Q

Với cảnh báo đó ANY= cùng một phiên bản, nếu không, DTUTIL sẽ nâng cấp gói lên vC Hiện tại
billinkc

Điểm tuyệt vời! Nhưng nâng cấp có thể hữu ích - cho những gì chúng ta làm dù sao đi nữa. Những gì tôi muốn làm là tạo các kế hoạch trong SQL 2008 và sao chép / nâng cấp các kế hoạch đó lên SQL 2008, 2008 R2, 2012,2014, 2016.
Sting
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.