web-dev-qa-db-fra.com

Erreur de base de données Ola Hallengren sur la localisation du répertoire Windows

Besoin d'aide pour résoudre le problème avec la sauvegarde d'une DB à l'aide d'un dB OLA HALLENGREN'S Procédure stockée dans un dossier partagé.

J'ai une procédure qui est exécutée au démarrage SQL Server. Il court Ola HallengrenDatabaseBackup procédure. Le service SQL Server est exécuté sous NT Service.

La part a des autorisations pour la machine où SQL fonctionne.

Maintenant, si exécutez DatabaseBackup manuellement cela va bien. Lorsqu'il s'exécute automatiquement au démarrage, il échoue avec l'erreur suivante:

MSG 50000, niveau 16, état 1, procédure de base de données, ligne 786 [Ligne de démarrage par lots 0] Le répertoire \\ *** n'existe pas

Si je modifie la procédure avec une clause Execute As DBO, il échoue avec la même erreur.

J'ai aussi essayé de Alter the SP avec clause Execute As Self - la même erreur à nouveau.

La question est donc:

Que dois-je faire pour le faire fonctionner?

  • Le chemin de fichier est fourni sous la forme d'un chemin UNC (E.G. \\machine2\backup\)
  • Ceci est SQL Express, donc je n'ai pas accès à des emplois SQL Agent.
  • Par conséquent, il s'agit d'une procédure stockée configurée pour exécuter lorsque l'instance SQL Server démarre, et non un travail SQL à exécuter lorsque SQL Agent commence.
2
George K

Réponse de la communauté Wiki :

Utilisez un compte de domaine avec des droits d'accès sur la part, cela devrait alors fonctionner. NT_Service ne pourra pas l'atteindre.

Si l'utilisation d'un compte de domaine n'est pas possible pour une raison quelconque, vous pouvez essayer d'accorder la permission du compte de la machine à la part. Le compte de la machine suit le format suivant: DOMAIN\MachineName$. Le $ est nécessaire pour noter que c'est un ordinateur et non un utilisateur.

5
user126897