加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 自定义ADO.NET提供程序,用于拦截和修改sql查询

发布时间:2020-12-15 21:15:16 所属栏目:百科 来源:网络整理
导读:我们的客户端有一个应用程序,它将blob存储在数据库中,现在已经增长到足以影响SQL Server的性能.为了解决这个问题,我们计划将所有blob卸载到文件系统,并将文件路径保留在用户表的新列中. 就像用户有一个包含列id,名称和内容(blob)的表文档;我们会要求他在此表
我们的客户端有一个应用程序,它将blob存储在数据库中,现在已经增长到足以影响SQL Server的性能.为了解决这个问题,我们计划将所有blob卸载到文件系统,并将文件路径保留在用户表的新列中.

就像用户有一个包含列id,名称和内容(blob)的表文档;我们会要求他在此表中添加一个新列’filepath’.

我们的客户愿意在此数据库中进行此更改.但是,当涉及到更改sql查询以读取和写入此表时,他们还没有准备接受这个.实际上,他们不希望任何导致重新编译和部署的更改.

现在我们计划编写一个自定义的ADO.NET提供程序

>拦截选择查询
>在select语句的末尾添加一个列’filepath’
>根据’filepath’值撤消结果集并修改’content’列值

是否有任何用例你认为这种方法肯定会失败?

我知道这听起来很脏但我们有更好的方法吗?

解决方法

您是否尝试将列切换为 FILESTREAM数据类型?这将完成您描述的所有操作,将数据从数据库中推出(到文件系统中).当然,访问仍然需要通过服务器作为TDS,但您可能会发现影响较小,并且您可以逐步更改代码以更直接地访问文件(以提高性能) – 最后一步将涉及更改查询,但是.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读