1 votes

Travail d'agent SQL : Utiliser un lecteur mappé avec des informations d'identification différentes

J'utilise SQL Server 2008 et je souhaite configurer une tâche d'agent pour sauvegarder toutes les bases de données. La machine exécutant SQL Server fait partie d'un domaine Windows. La destination des fichiers de sauvegarde se trouve sur une autre machine, qui ne fait pas partie du domaine, et j'ai donc besoin d'informations d'identification différentes pour y accéder.

J'ai créé un nouveau compte de domaine (SqlBackup), je l'ai ajouté en tant que nouveau compte SQL (en lui attribuant le nom de "base de données de sauvegarde") et je l'utilise pour exécuter le travail de l'agent. Je me suis connecté localement en tant que cet utilisateur pour mapper le partage réseau cible sur un lecteur (en lui fournissant les informations d'identification nécessaires).

Le script que j'utilise pour sauvegarder toutes les bases de données appelle simplement "backup database" (dans une boucle de curseur sur toutes les bases de données) et écrit le fichier de sauvegarde sur le lecteur mappé. Le problème est le suivant : Lorsque l'agent SQL exécute le travail en tant qu'utilisateur SqlBackup, le lecteur n'est pas mappé.

Qu'est-ce que j'ai manqué ?

0 votes

Mise à jour : j'ai réussi à le faire fonctionner. Le script SQL appelle xp_cmdshell 'net use \\machine\share password /user:username /persistent:yes' pour donner accès à ce partage avec les informations d'identification données. Je peux alors écrire le fichier de sauvegarde sur ce partage. (Bien sûr, j'ai d'abord dû activer xp_cmdshell, configurer le compte proxy pour cela, accorder l'exécution à mon compte sql et ajouter le compte de domaine au groupe admin pour permettre la connexion à partir du script).

2voto

LMillsap Points 21

Si votre travail consiste à exécuter des commandes en ligne de commande, mettez-le dans un fichier .bat à exécuter.

Ensuite, au sein de la .bat avant votre commande qui fait le vrai travail, utilisez le fichier net use ( NET USE drive: share_name /USER:domain/user_id password ) pour mapper le lecteur à partir de la tâche SQL. Vous pouvez fournir le nom d'utilisateur et le mot de passe de votre choix. N'oubliez pas de démapper le lecteur avant de quitter le fichier bat ( NET USE drive: /delete ) ou la prochaine fois qu'il s'exécutera, il générera un niveau d'erreur que SQL interprétera comme un problème. Lorsque vous exécutez la commande .bat de l'étape de travail, "appeler" le .bat fichier ( CALL MY_BAT.BAT ) ou SQL peut passer à l'étape suivante avant l'étape .bat est terminée.

1voto

Kara Marfia Points 7892

IIRC, le mappage des lecteurs ne fonctionne qu'avec une connexion interactive - et je crois que votre sauvegarde fonctionne comme un service. La tâche de sauvegarde SQL vous permettra-t-elle d'ajouter des informations d'identification pour le lecteur cible en utilisant un chemin UNC au lieu de mapper un lecteur ?

0voto

Cascabel Points 1430

Les services ne peuvent pas utiliser de lecteurs mappés et, pour autant que je sache, il n'existe aucun moyen de transmettre des informations d'identification en utilisant le chemin UNC. Si le serveur hors domaine ne peut pas être ajouté au domaine, ma seule suggestion serait d'accorder les droits d'écriture à ce partage à "Tout le monde".

Une autre solution pourrait consister à décharger les sauvegardes sur les lecteurs du serveur local, puis à créer un travail par lots de type "collecteur" sur le serveur hors domaine pour acheminer les fichiers de sauvegarde vers leur destination finale.

0 votes

Il s'avère que vous pouvez utiliser NET USE pour transmettre les informations d'identification pour accéder à un partage (voir le commentaire de mon article original). Nous aurions pu écrire les sauvegardes sur le disque local, mais cela aurait nécessité trop d'espace.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X