Comment forcer une application à reconnaître deux noms pour un lecteur de disque?

4

J'ai une base de données d'images étendue (métadonnées de 3,25 Go, images 90K) conservée dans un produit existant (idImager V5). À son tour, SQL Server 2005 est utilisé comme SGBD sous-jacent.

Au fil du temps, j’ai ajouté et mis à jour des informations sur les images et transféré la base de données sur différents lecteurs de disque afin d’utiliser des disques plus volumineux ou de remplacer des lecteurs défectueux. J'ai eu différents emplacements pour la base de données et différents emplacements pour les images gérées. Les noms de disque ont changé au cours de la période d'utilisation. Toutes les références aux lecteurs concernent à la fois les lecteurs physiques et logiques. Je n'ai jamais eu de partitionnement des lecteurs ni de systèmes de démarrage multiples.

La situation actuelle est que la base de données se trouve sur le lecteur C: nommé "Windows7_OS". Ce nom n'a jamais changé au fil des ans. Les images sont sur le lecteur D: nommé "2nd System Drive". Ce disque a été nommé "Nouveau volume" dans le passé.

J'ai quelques images stockées dans la base de données lorsque le nom était "Nouveau volume", et d'autres lorsque le nom était "2nd System Drive". Si j'essaie d'accéder aux photos stockées sous le mauvais nom actuel, le message d'erreur s'affiche.

enter image description here.

Si je change les noms, je reçois le même message (y compris un nom de chemin complet), mais relativement à l'autre nom.

Est-il possible d'obtenir que la base de données d'images accepte les deux noms? Ma pensée initiale était d’aliaser le lecteur - sous Windows ou SQL Server. Je n'ai pas trouvé le moyen de le faire. Je ne souhaite pas utiliser les bases de données complètes de métadonnées et d'images pour résoudre les noms incorrects, pas plus que je ne souhaite configurer le système à partir de zéro.

Mettre à jour:

La suggestion de @ Scott ne fonctionne que lorsqu'un lecteur d'un ordinateur est remplacé par un autre. Cela ne fonctionne pas lorsque le même lecteur est capturé deux fois dans la base de données sous différentes étiquettes, mais qu'une seule étiquette est visible par la base de données. La vérification de cette approche a révélé que la configuration de l’explorateur de catalogue pour exclure les dossiers de catalogue supprime également cette option.

Mettre à jour:

Il a été nécessaire de suivre la suggestion de @ harrymc, dans l’esprit mais pas dans le détail. Une table de la base de données contient tous les chemins de fichiers contenant des images et l’étiquette de média pour chaque chemin de fichier. Changer les données dans ce tableau fournit une solution exacte à mon problème. Cela nécessitait la sauvegarde de la base de données et l'utilisation des privilèges du propriétaire de la base de données.

Chris Walton
la source
Vous ne savez pas si cela fonctionnera, mais ... créez sur votre ordinateur un sous-répertoire portant le même nom que le volume auquel vous essayez d'accéder. Collez-y des images qui devraient être dessus. Mappez maintenant ce répertoire sur une lettre de lecteur. Ce qui sera affiché dans l'explorateur est le nom du répertoire. Ce pourrait tromper le logiciel en lui faisant croire que le volume est correct Note: Ceci est une hypothèse et très probablement pourrait ne pas fonctionner ...
Steve
@Steve merci pour la suggestion. Comme vous le craigniez, cela ne fonctionne pas.
Chris Walton
Une autre chose qui peut travail: créez un partage SMB avec le nom du volume et associez-le à une lettre de lecteur. Je fais juste des suggestions en l'absence des autres.
Steve

Réponses:

1

Si SQL Server 2005 vérifie l'étiquette du volume, il n'y a aucun moyen de cacher le fait que l'étiquette a changé, vous devez donc modifier la façon dont les images sont stocké dans la base de données.

La seule façon dont je puisse penser est de changer "Nouveau volume" en "2nd System Drive" dans la base de données, consiste à réimporter les images, dans l’esprit suivant:

  1. Changez le nom du volume en "Nouveau volume"
  2. Exécuter une requête qui sélectionne toutes les images de la base de données sur "Nouveau volume"
  3. Enregistrer le résultat de la requête sur un fichier
  4. Supprimer les images sur "Nouveau volume" de la base de données
  5. Changez le nom du volume en "2nd System Drive"
  6. Importer les images sauvegardées

Comme je n'ai pas SQL Server 2005 pour jouer avec, ni une copie de votre base de données, Je ne peux pas aller plus dans les détails. Je suggère de prendre des sauvegardes complètes de la base de données avant de commencer.

harrymc
la source
+1 et accepté pour avoir suggéré une approche réussie et épaisse et avoir déplacé ma pensée vers la base de données à partir d'alias Windows. Aussi le rappel sur les sauvegardes complètes.
Chris Walton
1

Plutôt que de créer un alias sur le lecteur, essayez d’utiliser une commande powershell pour alias, renommer ou déplacer tous les fichiers. Je suggérerais de changer de nom ou de changer de nom plutôt que d'alias.

Pour renommer les fichiers, la cmdlet est Rename-Item ou ren

Rename-Item *.html *.txt     'This renames all files ending with .html to end with .txt

Pour déplacer les fichiers, l'applet de commande est Move-Item ou mv.

Move-Item c:\images\* d:\images\     'Moves all files from the c:\images\ directory to d:\images\

Je ne sais pas si le changement de nom fonctionnerait, mais le déménagement devrait l'être.

Magister Ludi
la source
Comment cela aiderait-il avec l'étiquette de volume?
harrymc
Si vous déplacez tous les fichiers, le libellé du volume doit être réinitialisé là où ils sont déplacés.
Magister Ludi
1
Le problème est qu'ils sont stockés dans la base de données avec un ancien nom de volume. La solution doit traiter SQL Server 2005, pas Windows.
harrymc
1
Je ne peux pas laisser de commentaires parce que je n'ai pas de représentant pour cela alors je vais demander ici. L'OP a-t-il utilisé des points de montage de volume au lieu de lettres de lecteur pour attacher les lecteurs à la base de données? Il devra peut-être détacher et rattacher les lecteurs pour réinitialiser les métadonnées.
Magister Ludi
@Magister Je ne me souviens pas comment j'ai assuré la modification de la base de données lorsque le lecteur D: a été ajouté. Je n'ai jamais rien fait de spécifique, comme attacher des lecteurs à la base de données. Je me souviens vraiment que s’assurer que la base de données référencait le nouveau lecteur dans les métadonnées stockées était une opération assez triviale.
Chris Walton
1

Je pense que votre problème est complètement lié à IdImager. Ses catalogues doivent stocker le label de volume et vous devez les mettre à jour, ce qui ne devrait pas être un processus difficile avec IdImager.

De: http://forum.idimager.com/viewtopic.php?f=14&t=14164

Allez dans Dossiers du catalogue, sélectionnez le dossier de niveau supérieur (qui peut être l'ID du lecteur), cliquez avec le bouton droit de la souris et sélectionnez "Déplacer le dossier du catalogue". Entrez le nouvel emplacement (identique à l'ancien dans votre cas) et cliquez sur OK.

IIRC cela ne devrait prendre que quelques secondes ou plus ... `

Scott C
la source
+1 et bonus pour m'avoir orienté vers une solution qui aurait dû fonctionner, mais qui a échoué en raison de la mise en œuvre exacte de la fonctionnalité. Me rappelant également un lien vers une source d’information que j’avais oubliée.
Chris Walton