如果我将文件移动到同一文件表中的某个其他目录,stream_id是否会更改?

时间:2014-01-21 07:20:01

标签: sql-server filetable

我正在使用MSSQL 2012及其名为File Table的功能来存储存储在分层目录中的大量文件。我通过列stream_id引用其他自定义表中文件的条目,该列对于文件表中的每个记录都是唯一的。有时我需要将文件表上的文件移动到同一文件表上的其他位置。到目前为止,我注意到如果将文件移动到另一个目录,stream_id不会改变。但是,现在在生产环境中,stream_id确实在移动后发生了变化,因此我的自定义表引用了文件表中不存在的条目。

用于移动我正在使用的文件File.Move(source, target);

在我的生产环境中部署文件表是否有问题,或者只是一个功能,如果我更改位置,stream_id有时会改变?

我在互联网上没有找到关于stream_id及其生命周期的任何参考。

1 个答案:

答案 0 :(得分:0)

stream_id是指向blob的指针,path_locator是表的PK。前者指的是文件,无论它在系统中的哪个位置,后者指的是当前占用该路径位置空间的任何文件。

我的理解是stream_id在该文件的生命周期内不会改变。如果您看到具有不同stream_id的“相同”文件,请考虑应用程序(如MS Word)创建临时文件,然后在保存时将临时文件重命名为当前文件。这将导致新文件具有相同的path_locator但具有不同的stream_id。