对 .NET 应用程序中的每个 SQL 调用都使用存储过程是最佳实践吗?
是否出于性能原因和减少 SQL 注入(inject)攻击的表面积(在 Web 应用程序中)而鼓励这样做?
最佳答案
与参数化查询相比,存储过程有一些优势:
当专门使用时,您可以关闭应用程序帐户的 CREATE、INSERT、SELECT、UPDATE、ALTER、DROP、DELETE 等访问权限,并通过这种方式添加少量安全。
当您有多个应用程序使用同一个数据库时,它们提供一致、可管理的界面。
即使在部署应用程序之后,DBA 也可以使用过程来管理和调整查询。
部署小的更改和错误修复要简单得多。
它们也有一些缺点:
过程的数量会迅速增长到难以维护的地步,并且当前的工具无法提供一种简单的方法来获得足够的文档。
参数化查询将数据库代码放在使用它的地方旁边。存储过程将它们分开,使得查找相关代码更加困难。
存储过程更难版本控制。
您需要为您的系统权衡这些成本/ yield 。
关于asp.net - .NET 中每个 SQL 语句的 SQL 存储过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/340575/