我使用 SQL Server FILESTREAM 来存储二进制大对象 (BLOB)。我有一个表,其中包含 varbinary(max) 列和 uniqueidentifier (GUID) 列。每个唯一标识符对应于 FILESTREAM 中的特定文件。
例如:
GUID D54F345C-56AA-40F6-90DB-A17C23117A40 对应文件 00002e64-000002f7-000b
GUID 1BEEA191-D046-48F9-8290-DD193F9BDCB5 对应于文件 00003a4d-000005be-0003
GUID FCFB269A-6E4C-4A2C-9F0B-2AE7EABD07CF 对应于文件 00000c05-00000058-000a
GUID BC0D325A-6710-4618-B607-79F0A705AB15 对应于文件 0000317e-000000a9-0003
GUID 30C2376E-0BF5-4321-BB28-25F45B8469DF 对应于文件 00001fed-0000010a-000a
我正在尝试从数据库中检索这些 GUID 的文件路径。这似乎是一项基本任务,但我无法在网上找到简单的解决方案。
有人可以提供 SQL 查询或指导如何查询数据库以查找给定 GUID 的文件路径吗?
FILESTREAM 不支持通过所有普通文件系统 API 进行访问。您可以使用特殊的 API 获取文件的文件句柄。
请参阅 使用 OpenSqlFilestream 访问 FILESTREAM 数据
如果您使用较新的 File Tables 功能,该功能“可以将文件和文档存储在 SQL Server 中称为 FileTables 的特殊表中,但可以从 Windows 应用程序访问它们,就好像它们存储在文件系统中一样,无需对您的客户端应用程序。”