我正在使用MSSQL 2012及其名为File Table的功能来存储存储在分层目录中的大量文件。我通过列stream_id引用其他自定义表中文件的条目,该列对于文件表中的每个记录都是唯一的。有时我需要将文件表上的文件移动到同一文件表上的其他位置。到目前为止,我注意到如果将文件移动到另一个目录,stream_id不会改变。但是,现在在生产环境中,stream_id确实在移动后发生了变化,因此我的自定义表引用了文件表中不存在的条目。
用于移动我正在使用的文件File.Move(source, target)
;
在我的生产环境中部署文件表是否有问题,或者只是一个功能,如果我更改位置,stream_id有时会改变?
我在互联网上没有找到关于stream_id及其生命周期的任何参考。
答案 0 :(得分:0)
stream_id是指向blob的指针,path_locator是表的PK。前者指的是文件,无论它在系统中的哪个位置,后者指的是当前占用该路径位置空间的任何文件。
我的理解是stream_id在该文件的生命周期内不会改变。如果您看到具有不同stream_id的“相同”文件,请考虑应用程序(如MS Word)创建临时文件,然后在保存时将临时文件重命名为当前文件。这将导致新文件具有相同的path_locator但具有不同的stream_id。