web-dev-qa-db-fra.com

Copiez les plans de maintenance sur un autre serveur

Existe-t-il un moyen de copier des plans de maintenance d'un SQL Server 2012 vers un autre? Les deux serveurs ne sont pas accessibles via la même copie de Management Studio en même temps (sur des réseaux différents).

21
Greg Balajewicz

Accédez au serveur sur lequel les travaux existent, dans l'Explorateur d'objets de Management Studio, accédez à Gestion> Agent SQL Server et mettez en surbrillance le dossier Travaux. Frappé F7 (ou Affichage> Détails de l'explorateur d'objets). Vous devriez voir plusieurs travaux dans le volet droit. Mettez en surbrillance celles que vous souhaitez copier, cliquez avec le bouton droit sur Script Job As> Create To> Clipboard. Connectez-vous maintenant à l'autre serveur, ouvrez une nouvelle fenêtre de requête, collez et appuyez sur F5. Beaucoup plus facile que de nettoyer avec SSIS.

Vous devrez peut-être prendre des mesures supplémentaires, selon ce que font les plans. Connectez-vous à l'instance Integration Services plutôt qu'à l'instance de base de données, développez Packages stockés> MSDB> Plans de maintenance, cliquez avec le bouton droit sur n'importe quel plan et choisissez Exporter le package. Sur l'autre serveur, suivez les mêmes étapes, mais cliquez avec le bouton droit sur Plans de maintenance et choisissez Importer le package. Vous devrez le faire pour chaque plan.

22
Aaron Bertrand

J'ai trouvé un moyen plus hacking.

Chaque plan d'exécution est un enregistrement dans le msdb.sysssispackages table.

Vous pouvez copier des enregistrements du msdb.sysssispackages table du serveur source vers msdb.sysssispackages table du serveur de destination.

Créez simplement un serveur lié sur le serveur source et utilisez cette insertion à partir du serveur source:

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: Remplacer le nom du serveur est crucial pour gérer la connexion de destination sur le concepteur de plan de maintenance.

IMPORTANT: les enregistrements de copie ne copient que la structure du plan de maintenance. Pour recréer des travaux, une fois la copie terminée, vous DEVEZ modifier chaque plan de maintien, réinitialiser le programme et l'enregistrer.

11
Riccardo Bassilichi