gpt4 book ai didi

sql-server - FileStream:T-SQL 与 Win32

转载 作者:行者123 更新时间:2023-12-01 09:38:43 25 4
gpt4 key购买 nike

我们的一个团队正在构建一个数据库(和应用程序),它将使用 SQL 2008 的 FileStream 功能来存储文档。根据文件流的 MS 最佳实践,与使用 T-SQL 相比,Win32 API 是访问 FileStream 数据的首选方式。

但是,使用 Win32 API 需要使用集成身份验证来连接到数据库。这是团队关心的问题,因为他们不想让用户直接访问数据库。他们希望应用程序使用 SQL 用户名和密码进行连接。

使用 Win32 与 T-SQL 访问文件流数据的优缺点是什么?是否有任何因素会导致无法使用 T-SQL?

最佳答案

T-SQL 和 Win32 Filestream 访问之间的主要区别在于数据传输到客户端的方式——使用 T-SQL 检索 Filestream 数据意味着存储引擎必须在 NTFS 上打开文件,通过 SQL 引擎和 TDS 将数据流回(传输 SQL 数据的标准方式)回客户端。如果使用 Win32,在打开文件操作期间存储引擎仍在路径中,但是一旦完成,数据可以通过 Win32 流直接从文件传输到客户端,完全绕过 SQL 引擎。

随着 blob 大小的增加,打开文件和通过引擎传输的开销在完成数据传输所需的总时间中所占的百分比越来越小。最近针对一个非常具体的案例研究的基准测试将阈值设置为内联(varbinary 最大存储)为 60KB,T-SQL 传输为 60KB-1.2MB,Win32 传输为 >1.2MB。正如我提到的,这是针对一个非常具体的案例,所以 YMMV。

就安全性而言,我可以看到以这种方式使用 SQL 安全性的许多问题,但是如果没有更多的上下文,很难提供建议。通过仅通过 T-SQL 访问 Filestream,您确实无法从 Filestream 中受益。

关于sql-server - FileStream:T-SQL 与 Win32,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3372092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com