[英]SQL Server stored procedure vs an external dll
我试图说服某人,使用外部DLL管理sql数据比使用存储过程更好。 目前,我正在与之打交道的人正在使用vba,并调用sql存储过程以从许多不同的来源获取所需的复杂数据。 据我了解,执行此类操作的最佳方法是使用dll /中间层来获取数据并能够将其格式化为需要的格式。
注意事项:
那么谁能告诉我使用外部dll然后使用sql存储过程的一些好处?
使用存储过程,并编写数据访问层,该数据访问层通过参数化的命令在单独的dll中调用它们。 存储过程是标准操作,可为您带来很多好处,参数化命令可为您提供自动的字符串安全性。
这种类型的设计基本上已经标准化,并且已经使用了多年,以至于Microsoft在.NET 4中包含了一个为您构造它的框架。
或多或少,您和另一个伙伴都是正确的,使用sprocs来确保安全,并出于安全性和可重用性而将您的DAL分开,原因很多
优点:
缺点:
您可以将SQL(包括存储过程)保存在平面文件中。 文件扩展名可以是txt,但是大多数使用sql-可以将SQL源代码存储在CVS / etc中,而不是.NET或Java源代码。
同意有关控制代码的要点,在DLL中要容易得多。 与源代码管理相同。 但是,从纯粹的性能角度来看,存储过程将胜出,因为它们是经过编译的,而不仅仅是缓存的。 我不知道这是否会带来足够的改变,但我想我会考虑一下。
使用存储过程也可以更加安全,因为您可以仅锁定对存储过程的访问,而不必(不必)向有连接的任何人公开表数据。
我想我没有真正回答您的问题,还没有指出您的论点中的漏洞。 抱歉,但是我从他们的角度来看。
我真的认为这归结为偏好问题 。 我个人比较喜欢ORM和将查询保存在DLL与存储的Procs中,与将S.Procs部署到数据库相比,我发现它们更易于维护和分发。 与原始查询相比,S.Proc具有某些优势。 一些优化和一些服务器端逻辑可以提高某些方面的性能。
总而言之,我个人更喜欢在代码中工作,而不是在DB Mumbo-jumbo中工作,因此,这就是为什么我选择DLL方法的原因。
另外,您也可以将源代码也保留在源代码控制中,而使用存储过程则要困难得多。
只是我的2c。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.