微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我们的客户端有一个应用程序,它将blob存储在数据库中,现在已经增长到足以影响sql Server的性能.为了解决这个问题,我们计划将所有blob卸载到文件系统,并将文件路径保留在用户表的新列中.

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

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

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

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

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

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

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐