J'ai un serveur SQL (2000, 2005 et 2008) et je voudrais utiliser SQL Agent (ou même une simple base de données de sauvegarde 'xxx' sur disk = 'yyy'), pour sauvegarder sur des disques distants.
C'est-à-dire: j'ai un lecteur mappé dans la machine SQL, par exemple: "M:" qui correspond à \\ otherbox \ someshare
Par défaut, SQL Server ne vous permettra pas de sauvegarder sur de tels disques, mais je pense qu'il existe un moyen d'activer cela. Quelqu'un peut-il m'indiquer les documents?
Merci d'avance.
sql-server
backup
mappeddrive
Martin Marconcini
la source
la source
Réponses:
Utilisez le chemin UNC lorsque vous spécifiez la destination - l'Agent SQL n'a pas de concept de «lecteurs» «mappés».
En outre, SQL Agent s'exécute généralement en tant que «service local» ou «système local» et, en tant que tel, n'a pas de droits sur les partages distants sur d'autres ordinateurs.
Vous avez deux choix:
Exécutez l'Agent SQL en tant que compte de rôle dans le domaine. Accordez à ce compte l'autorisation d'écrire dans le répertoire / partage où vous souhaitez stocker les sauvegardes.
Exécutez l'Agent SQL en tant que "Service réseau". Il s'authentifiera sur le serveur de partage avec le compte d'ordinateur de domaine de la machine sur laquelle le service s'exécute. Accordez à ce compte l'autorisation d'écrire dans le répertoire / partage où vous souhaitez stocker la sauvegarde.
Si vous n'avez pas de domaine, créez un compte avec le même nom d'utilisateur et le même mot de passe sur la machine hébergeant SQL Agent et la machine hébergeant les fichiers de sauvegarde. Modifiez l'agent SQL pour qu'il s'exécute en tant que compte "rôle" et accordez à ce compte l'autorisation d'écrire dans le répertoire / partage où vous souhaitez stocker la sauvegarde. (Le "domaine du pauvre" ...)
la source
Je suis totalement d'accord avec les deux réponses sur le chemin UNC.
Je voudrais également ajouter que même avec des lecteurs mappés, vous avez une solution de contournement simple. Vous pouvez exécuter une sauvegarde sur n'importe quel lecteur normal de votre serveur. Et puis vous pouvez ajouter
Commande SQL au travail ou au script SQL que vous exécutez.
Avec xp_cmdshell, vous pouvez faire encore plus - par exemple, exécuter un outil de ligne de commande d'archivage externe, comme 7z pour compresser le fichier avant de le copier sur le lecteur mappé (lorsque la connexion à distance est trop lente ...)
PS: J'ai oublié de mentionner que xp_cmdshell peut être activé et désactivé en utilisant l'outil de configuration de la surface d'exposition et en exécutant sp_configure (et par défaut, il est désactivé)
la source
Votre agent doit avoir accès aux partages réseau. Ils n'ont pas besoin d'être cartographiés au préalable.
Vous le faites comme ceci:
Je crois que si l'utilisateur propriétaire du travail est un administrateur système SQL, il s'exécute sous l'agent, sinon il s'exécute en tant qu'utilisateur non administrateur système.
la source
Si SQL Server ne s'exécute pas sous un compte de domaine, vous pouvez mapper un lecteur réseau pour le compte sqlserver (pas votre compte) comme décrit dans cette réponse stackoverflow
Vous devez d'abord activer xp_cmdshell
Ensuite, vous pouvez mapper un lecteur en utilisant:
Enfin, vous pouvez sauvegarder sur ce lecteur mappé:
la source
Gardez à l'esprit ici que SQL Server est très intolérant aux retards réseau. S'ils se produisent, et ils ont tendance à le faire, la sauvegarde échouera. Je ne recommande pas du tout cette pratique pour les environnements de production.
Mieux vaut sauvegarder localement puis copier.
la source
Le moyen le plus simple consiste à créer un lecteur .vhd sur un partage réseau via la gestion des disques et à lui attribuer une lettre de lecteur. SQL peut accéder à ce lecteur sans aucune modification.
Ajoutez simplement un script diskpart.exe au planificateur au démarrage afin de l'attacher automatiquement au redémarrage.
exemple, sélectionnez vdisk file = "\ {ip address / server} {networkshare} {filenamep.vhd}" attach vdisk // se souvient de la dernière lettre de lecteur affectée à.
la source