asp.net - .NET 中每个 SQL 语句的 SQL 存储过程?

标签 asp.net database stored-procedures

对 .NET 应用程序中的每个 SQL 调用都使用存储过程是最佳实践吗?

是否出于性能原因和减少 SQL 注入(inject)攻击的表面积(在 Web 应用程序中)而鼓励这样做?

最佳答案

与参数化查询相比,存储过程有一些优势:

  1. 专门使用时,您可以关闭应用程序帐户的 CREATE、INSERT、SELECT、UPDATE、ALTER、DROP、DELETE 等访问权限,并通过这种方式添加少量安全。

  2. 当您有多个应用程序使用同一个数据库时,它们提供一致、可管理的界面。

  3. 即使在部署应用程序之后,DBA 也可以使用过程来管理和调整查询。

  4. 部署小的更改和错误修复要简单得多。

它们也有一些缺点:

  1. 过程的数量会迅速增长到难以维护的地步,并且当前的工具无法提供一种简单的方法来获得足够的文档。

  2. 参数化查询将数据库代码放在使用它的地方旁边。存储过程将它们分开,使得查找相关代码更加困难。

  3. 存储过程更难版本控制。

您需要为您的系统权衡这些成本/ yield 。

关于asp.net - .NET 中每个 SQL 语句的 SQL 存储过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/340575/

相关文章:

android - 我可以在哪里安全地存储 Android 应用程序上的数据库密码?

c# - System.Data.SqlClient.SqlException 与网络相关或特定于实例的错误

sql-server-2008 - 在存储过程中计算加权(贝叶斯)平均分数/索引?

sql - 从 Ruby on Rails 调用数据库过程

php - 在 PHP 中插入和选择存储过程

asp.net - asp.net 中的人体高度、体重验证

c# - 兼容模式开启时如何判断正确的浏览器版本

jquery - 使用 JQuery Table Sorter 插件仅对一列进行排序

asp.net - 在 ASP.net 中插入 Javascript

mysql - 在centos(Linux)中从mysql删除数据库