1

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

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

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

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

4

1 回答 1

0

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

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

于 2014-09-02T01:31:36.060 回答