1

我正在使用 SQL Server 2008。

我有一个表(TBL_FILE),将用户上传的文件存储在二进制列中。但是用户不想打开我们的系统来访问该文件。他们希望有一个映射到表 (TBL_FILE) 的文件夹(网络驱动器、Web 文件夹、本地驱动器、本地文件夹......都可以)。所以他们可以直接在文件资源管理器中直接打开文件。

关键是他们想直接在文件资源管理器中打开文件

有可能这样做吗?我需要编写什么样的程序才能做到这一点?以及如何做安全?

谢谢!

亚历克斯

4

2 回答 2

0

您是否考虑过编写一个提示登录的应用程序,然后在友好的用户界面中向用户显示文件列表?您可以将该应用程序的快捷方式放在他们希望这些文件所在的文件夹中。

如果您必须有直接从文件系统到二进制数据字段的快捷方式,那么您将不得不有点 hacky。根据文件的更新频率,您可以尝试以下选项之一:

1 - 编写一个将作为 Windows 服务或计划作业运行的应用程序。定期检查更改的二进制数据,并将其保存到磁盘。缺点:文件系统只会每隔一段时间更新一次,所以数据库更改不会立即可用。

2 - 在将二进制文件保存到磁盘的表上写入触发器。每当行更改时触发触发器 - 最好通过监视“上次修改时间”或类似字段,而不是直接检查二进制值。触发器可以触发 CLR 存储过程,或者您可以使用此处描述的方法直接从 T-SQL 执行它。缺点:您在桌子上有一个潜在的耗时触发器。

在任何一种情况下,安全都会成为 Windows 文件系统的问题。只需将文件夹的访问权限授予应该查看文件的任何人。

祝你好运!

于 2011-04-15T00:48:38.577 回答
-1

在谷歌搜索后,我终于找到了这个问题的解决方案。

我们可以使用 .NET 技术或其他第三方库创建逻辑驱动器。其中一个库是 Doken http://dokan-dev.net/en/

Doken 能够让我们在计算机中创建驱动器并自己执行逻辑。它似乎能够将文件夹映射到数据库中的表。但我还没有尝试过。

谢谢!

亚历克斯

于 2011-04-15T02:03:48.277 回答