SQL xp_cmdshell copier des fichiers entre les serveurs
Je suis en train de déplacer tous .zip dans un dossier vers un autre dossier. le dossier source est situé sur un autre serveur, je suis actuellement en utilisant
EXECUTE xp_cmdshell 'copy \\server1\e$\ETL\*.zip \\server2\e$\ETL\'
GO
Qui est de travailler, si je suis connecté à un serveur, mais le but est d'automatiser ce processus VIA un travail sql server agent. J'ai essayé
EXECUTE sp_xp_cmdshell_proxy_account 'domain\useracc','pass'
GO
EXECUTE xp_cmdshell 'copy \\server1\e$\ETL\*.zip \\server2\e$\ETL\'
GO
mais je reçois l'erreur suivante;
Une erreur s'est produite lors de l'exécution de sp_xp_cmdshell_proxy_account. Raisons possibles: la condition de compte est invalide ou " ##xp_cmdshell_proxy_account##' informations d'identification ne peut pas être créé. Code d'erreur: '0'.
Et aussi ne sais pas si c'est ma solution. S'il vous plaît aider avec la façon dont je peux y parvenir. Les noms de fichier sur server1 changement de nom et la quantité de tous les jours.
Vous devez vous connecter pour publier un commentaire.
Je conseille vivement...Ne pas utiliser de xp_cmdshell. Il ouvre de grandes failles de sécurité dans votre zone de surface et vous rend vulnérable à l'attaque. xp_cmdshell doit être désactivé!
Au lieu de cela, si vous souhaitez automatiser cela avec l'agent serveur, vous avez 2 options. Ma préférence serait d'écrire un simple package SSIS avec un système de fichiers de tâches et le calendrier de ce paquet avec server agent. SSIS est sous-utilisé, pour ce genre de tâche, mais est en fait assez bon dans ce domaine.
Sinon ré-écrire votre script à utiliser le Serveur Mandataire CmdExec les étapes de travail. Cela ne nécessite pas de xp_cmdshell être activée et réduit la surface d'attaque.
J'ai Trouvé que la suite travaillé pour moi;
Modifier l'ouverture de session d'un utilisateur avec un accès sur les deux serveurs. puis de le ré-écrire votre script à utiliser le Serveur Mandataire CmdExec les étapes de travail(Merci Pete Carter)