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

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

概述我们的客户端有一个应用程序,它将blob存储在数据库中,现在已经增长到足以影响SQL Server的性能.为了解决这个问题,我们计划将所有blob卸载到文件系统,并将文件路径保留在用户表的新列中. 就像用户有一个包含列id,名称和内容(blob)的表文档;我们会要求他在此表中添加一个新列’filepath’. 我们的客户愿意在此数据库中进行此更改.但是,当涉及到更改sql查询以读取和写入此表时,他 我们的客户端有一个应用程序,它将blob存储在数据库中,现在已经增长到足以影响sql Server的性能.为了解决这个问题,我们计划将所有blob卸载到文件系统,并将文件路径保留在用户表的新列中.

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

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

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

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

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

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

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

以上是内存溢出为你收集整理的c# – 自定义ADO.NET提供程序,用于拦截和修改sql查询全部内容,希望文章能够帮你解决c# – 自定义ADO.NET提供程序,用于拦截和修改sql查询所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1227796.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存