0

J'utilise SQL-DMO pour restaurer une sauvegarde de base de données située sur un partage réseau dans une instance de SQL Server s'exécutant sur la machine locale.Qu'est-ce qui peut provoquer l'échec de la restauration de la base de données à partir d'un partage réseau?

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

J'ai trouvé sur le serveur SQL sur la machine virtuelle a été exécuté sous le système utilisateur et changé pour fonctionner comme Network Service pensant que cela é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 pas de jeux de résultats, ou le jeu de résultat actuel contient aucune ligne.

Avant ce code, je fais une vérification pour File.Exists(backupFile) et ça passe. Cependant, je suis conscient que le processus qui exécute cette vérification (mon programme) n'est pas le même qui exécute la restauration (SQL Server), donc ce n'est pas quelque chose à faire.

Ce qui pourrait causer ce problème? Que puis-je faire pour comprendre pourquoi le serveur ne peut pas voir le fichier de sauvegarde?

+0

Pour ce qui vaut la peine, je cours SQL Server 2008 R2. –

Répondre

1

Recherchez dans les services (Démarrer-> run-> services.msc) et faites défiler jusqu'à SQL Server. L'utilisateur sous l'onglet d'ouverture de session n'a probablement pas d'autorisation pour le partage. Si Sql Server va avoir besoin d'accéder aux ressources de domaine, je vous recommande de changer le service pour ouvrir une session en tant qu'utilisateur de domaine à faible privilège, de sorte qu'il puisse être assigné des autorisations à ces ressources.

+0

Cela semble être le cas. La VM n'est pas sur le même domaine que le partage, et n'a donc aucun utilisateur avec l'autorisation d'y accéder. J'ai supposé que c'était sur le même domaine parce que je pourrais employer l'explorateur et le File.Exists pour accéder au dossier, mais c'était seulement parce que quelqu'un avait entré leurs identifiants sur l'explorateur en accédant au partage. Il faudra un certain temps pour confirmer, donc je n'accepterai pas encore cette réponse, mais je suis presque sûr que c'est le problème. –

Questions connexes