Copiez les plans de maintenance sur un autre serveur

19

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).

Greg Balajewicz
la source

Réponses:

20

Accédez au serveur sur lequel se trouvent les travaux, dans l'Explorateur d'objets de Management Studio, accédez à Gestion> Agent SQL Server et mettez en surbrillance le dossier Travaux. Appuyez sur 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.

Aaron Bertrand
la source
11

J'ai trouvé un moyen plus hacking.

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

Vous pouvez copier des enregistrements de la msdb.sysssispackagestable du serveur source vers la msdb.sysssispackagestable 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, lorsque vous avez terminé la copie, vous DEVEZ modifier chaque plan de maintien, réinitialiser le calendrier et l'enregistrer.

Riccardo Bassilichi
la source
1
Suggérez d'utiliser des barres obliques inverses de fin dans le remplacement ('ab \', 'yz \') pour éviter de remplacer d'autres parties des données.
crokusek
-2
  1. log comme "sa" sinon ne sera pas affiché.

  2. à voir rapidement:

entrez la description de l'image ici

ingconti
la source
OP posait des questions sur les plans de maintenance qui sont distincts des travaux et ne peuvent pas générer de scripts de création comme vous le pouvez pour les travaux.
Jordanie