Qu'est-ce qui pourrait provoquer une restauration de la base de données à partir d'un partage de réseau pour échouer?

StackOverflow https://stackoverflow.com/questions/5458255

Question

J'utilise SQL-DMO pour restaurer une sauvegarde de base de données située sur un partage de réseau dans une instance de SQL Server fonctionnant sur la machine locale.

Le code fonctionne bien sur ma machine. Mais sur une machine virtuelle de test, cela ne fonctionne que si je mets la sauvegarde dans un chemin local. Si je l'essaye sur le réseau, il échoue.

J'ai découvert que le serveur SQL sur la machine virtuelle exécutait sous le Système utilisateur et a changé pour fonctionner comme Service réseau Penser que c'était un problème d'accès au réseau. Mais cela n'a pas résolu le problème.

Ce code échoue car l'appel à ReadFileList renvoie un jeu de résultats vide.

Dim restore As New SQLDMO.Restore With {
  .Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database,
  .ReplaceDatabase = True,
  .Database = dbName,
  .Files = "[" + backupFile + "]",
  .Devices = ""}
Dim fileList = restore.ReadFileList(sqlserver)
Dim dataLogicalName = fileList.GetColumnString(1, 1)
Dim dataPhysicalName = Path.GetFileName(fileList.GetColumnString(1, 2))
Dim logLogicalName = fileList.GetColumnString(2, 1)
Dim logPhysicalName = Path.GetFileName(fileList.GetColumnString(2, 2))

SQL-DMO] Ce cache ne contient aucun ensemble de résultats, ou le jeu de résultats actuel ne contient aucune ligne.

Avant ce code, je fais un chèque pour File.Exists(backupFile) Et il passe. Cependant, je suis conscient que le processus qui exécute ce chèque (mon programme) n'est pas le même qui exécute la restauration (SQL Server), donc ce n'est pas quelque chose à passer.

Qu'est-ce qui pourrait provoquer ce comportement? Que puis-je faire pour comprendre pourquoi le serveur ne peut pas voir le fichier de sauvegarde?

Était-ce utile?

La solution

Regardez dans les services (start-> run-> Services.msc) et faites défiler vers le serveur SQL. L'utilisateur sous l'onglet de connexion n'a probablement pas l'autorisation de la part.

Si SQL Server va avoir besoin d'accéder aux ressources du domaine, je recommanderais de modifier le service en connexion en tant qu'utilisateur de domaine privilégié, afin qu'il puisse se voir attribuer des autorisations à ces ressources.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top