我有一个庞大的图像数据库(3.25GB 元数据,90K 图像),保存在旧产品 (idImager V5) 中。这又利用 SQL Server 2005 作为底层 DBMS。
随着时间的推移,我一直在添加和维护映像信息,并将数据库转移到不同的磁盘驱动器以使用更大的磁盘或更换有故障的驱动器。我的数据库和正在管理的映像的位置都不同。磁盘名称在使用期间发生了变化。所有对驱动器的引用都与物理驱动器和逻辑驱动器有关。我从未对驱动器进行过任何分区,也没有多个启动系统。
目前的情况是,数据库位于驱动器 C: 上,名为“Windows7_OS”。多年来,这个名字从未改变过。图像位于驱动器 D: 上,名为“第二个系统驱动器”。这个驱动器过去曾被命名为“新卷”。
我在数据库中存储了一些名称为“新卷”的图片,还有一些名称为“第二个系统驱动器”的图片。如果我尝试访问当前错误名称下存储的照片,我会收到错误消息
。
如果我切换名称,我会收到相同的消息(包括完整路径名),但相对于另一个名称。
有没有办法让图像数据库接受这两个名称?我最初的想法是给驱动器起个别名 - 在 Windows 或 SQL Server 中。我还没有找到这样做的方法。我不想为了找出错误的名称而浏览整个元数据和图像数据库,也不想从头开始设置系统。
更新:
@Scott 的建议仅在一台计算机上的驱动器更改为另一台计算机上的驱动器时才有效。当同一驱动器在数据库中以不同的标签捕获两次,但一次只有一个标签对数据库可见时,此建议不起作用。检查此方法后发现,配置目录资源管理器以排除目录文件夹也会将此选项从视线中移除。
更新:
事实证明,有必要遵循@harrymc 的建议,虽然细节上不是那么详细,但精神上是必要的。数据库中的表包含所有包含图像的文件路径,以及每个文件路径的媒体标签。更改此表中的数据为我的问题提供了精确的解决方案。这需要备份数据库,并以数据库所有者权限进行操作。
答案1
如果SQL Server 2005检查卷标,则没有办法隐藏标签已经改变的事实,因此需要改变图片在数据库中的存储方式。
我能想到的将数据库中的“新卷”更改为“第二系统驱动器”的唯一方法是重新导入图片,本着以下精神:
- 将卷名称更改为“新卷”
- 运行查询以选择“新卷”上的所有数据库图片
- 将查询结果保存到文件中
- 从数据库中删除“新卷”上的图片
- 将卷名更改为“第二系统驱动器”
- 导入保存的图片
由于我没有 SQL Server 2005 可供使用,也没有您的数据库副本,因此我无法详细介绍。我建议在开始之前对数据库进行完整备份。
答案2
您可以尝试使用 powershell 命令来为所有文件设置别名、重命名或移动,而不是为驱动器设置别名。我建议移动或重命名而不是设置别名。
用于重命名文件的 cmdlet 是 Rename-Item 或 ren
Rename-Item *.html *.txt 'This renames all files ending with .html to end with .txt
对于移动文件,cmdlet 是 Move-Item 或 mv
Move-Item c:\images\* d:\images\ 'Moves all files from the c:\images\ directory to d:\images\
我不确定重命名是否有效,但移动应该有效。
答案3
我认为您的问题完全与 IdImager 有关。它的目录必须存储卷标,您需要更新它们,使用 IdImager 更新它们应该不是什么困难的过程。
从:http://forum.idimager.com/viewtopic.php?f=14&t=14164
转到目录文件夹,选择顶层文件夹(可以是驱动器 ID),右键单击并选择“重新定位目录文件夹”。输入新位置(在您的情况下,与旧位置相同)并单击“确定”。
我记得这只需要几秒钟左右......'