Salin paket perawatan ke server yang berbeda

19

Apakah ada cara untuk menyalin rencana pemeliharaan dari satu SQL Server 2012 ke yang lain? Kedua server tidak dapat diakses melalui salinan Management Studio yang sama secara bersamaan (pada jaringan yang berbeda).

Greg Balajewicz
sumber

Jawaban:

20

Pergi ke server di mana pekerjaan ada, di Object Explorer Management Studio pergi ke Management> SQL Server Agent dan sorot folder Jobs. Tekan F7(atau Lihat> Rincian Penjelajah Objek). Anda akan melihat banyak pekerjaan di panel kanan. Sorot yang ingin Anda salin, klik kanan, Script Job As> Create To> Clipboard. Sekarang terhubung ke server lain, buka jendela permintaan baru, tempel, dan tekan F5. Jauh lebih mudah daripada mucking dengan SSIS.

Anda mungkin harus mengambil langkah-langkah tambahan, tergantung pada apa yang dilakukan rencana. Sambungkan ke instance Layanan Integrasi, daripada instance database, perluas Paket yang Disimpan> MSDB> Paket Pemeliharaan, dan klik kanan rencana apa pun dan pilih paket Ekspor. Di server lain, ikuti langkah-langkah yang sama, tetapi klik kanan Paket Perawatan dan pilih paket Impor. Anda harus melakukan ini untuk setiap paket.

Aaron Bertrand
sumber
11

Saya menemukan cara peretasan yang lebih.

Setiap Rencana Eksekusi adalah satu catatan dalam msdb.sysssispackagestabel.

Anda dapat menyalin catatan dari msdb.sysssispackagestabel server sumber ke msdb.sysssispackagestabel server tujuan.

Cukup buat server tertaut di server sumber dan gunakan Sisipan ini dari server sumber:

INSERT INTO 
    YOUR-DEST-SERVER-NAME.msdb.dbo.sysssispackages
SELECT        
    name, 
    id, 
    description, 
    createdate, 
    folderid, 
    ownersid, 
    cast(
        cast(
            replace(
                cast(
                    CAST(packagedata AS VARBINARY(MAX)) AS varchar(max)
                ), 
            'YOUR-SOURCE-SERVER-NAME', 'YOUR-DEST-SERVER-NAME') 
        as XML) 
    as VARBINARY(MAX)) as packagedata, 
    packageformat, 
    packagetype, 
    vermajor, 
    verminor, 
    verbuild, 
    vercomments, 
    verid, 
    isencrypted, 
    readrolesid, 
    writerolesid

FROM
    msdb.dbo.sysssispackages AS sysssispackages_1
WHERE        
    (name = 'YourMaintenancePlanName')

INFO: Ganti nama server sangat penting untuk menangani koneksi tujuan pada desainer Rencana Pemeliharaan.

PENTING: Menyalin catatan hanya menyalin struktur rencana perawatan. Untuk membuat ulang pekerjaan, saat Anda selesai menyalin, Anda HARUS mengedit setiap Mantainence Plan, mengatur ulang jadwal dan menyimpannya.

Riccardo Bassilichi
sumber
1
Sarankan menggunakan trailing backslash di ganti ('ab \', 'yz \') untuk menghindari penggantian bagian lain dari data.
crokusek
-2
  1. log sebagai "sa" jika tidak, tidak akan ditampilkan.

  2. untuk melihat dengan cepat:

masukkan deskripsi gambar di sini

ingconti
sumber
OP bertanya tentang rencana pemeliharaan yang terpisah dari pekerjaan dan tidak dapat menghasilkan skrip yang dibuat dengan cara yang Anda bisa untuk pekerjaan.
Jordan