SQL Server存储过程与外部dll

时间:2010-08-23 23:55:10

标签: c# sql-server vba stored-procedures

我试图说服某人使用外部DLL来管理sql数据比使用存储过程更好。目前我正在使用的人正在使用vba并调用sql存储过程来从许多不同的源获取所需的复杂数据。我的理解是,采取这种行动的最佳方法是使用dll / some中间层来获取数据并能够根据需要对其进行格式化。

要记住的一些事情:

  • 与我合作的人并不关心能够进一步扩展到现在我们
  • 他们不关心能够切换到不同的平台
  • 他们认为目前的设置没有太大的性能问题
  • 使用dll需要更多不同方向的工作
  • 他们不想切换,如果没有当前的问题,就像现在这样做。(所以只是因为它不正确的方式不会工作......我试过了)

那么有人能告诉我使用外部DLL然后使用sql存储过程的一些好处吗?

4 个答案:

答案 0 :(得分:4)

使用存储过程,并编写数据访问层,通过参数化命令在单独的dll中调用它们。存储过程是一个标准,为您提供了大量的好处,参数化命令为您提供自动字符串安全。

这种类型的设计基本上是如此标准化,并且多年来微软已经包含了一个在.NET 4中为您构建它的框架。

或多或少,你和其他人都是对的,使用sprocs来保证安全,并将你的DAL分开以保证安全性和可重用性以及很多原因

答案 1 :(得分:2)

ORM / DLL方法

<强>临

  • 您不必学习SQL或存储过程语法

<强>缺点:

  • 使单个交易中的多个操作复杂化
  • 风险增加应用程序和数据库之间的行程,这意味着数据同步/并发问题
  • 在复杂的查询中完全失败;大多数人都支持通过ORM存储过程,因为这个

您可以将SQL(包括存储过程)保存在平面文件中。文件扩展名可以是txt,但大多数使用sql - 使得在CVS / etc中存储SQL源与对比.NET或Java源代码无关。

答案 2 :(得分:1)

同意关于控制代码的要点,在DLL中更容易。与源代码管理相同。但是,从纯粹的性能角度来看,存储过程将在一天中获胜,因为它们是经过编译的,而不仅仅是缓存的。我不知道它是否会产生足够的差异,但我想我会把它扔进去。

使用存储过程也可以更加安全,因为您可以锁定对存储过程的访问权限,而您不必(不得不)将表数据公开给任何有连接的人。

我想我并没有真正回答你的问题,只要指出你的论点中的漏洞。对此我很抱歉,但我从他们的角度来看待它。

答案 3 :(得分:0)

我认为这归结为偏好问题。我个人喜欢ORM&amp;在DLL与Stored Procs中保存查询,我发现它们比将S.Procs部署到DB更容易维护和分发。但是S.Proc在原始查询上有一些优点。一些优化,以及一些可以提高某些领域性能的服务器端逻辑。

总而言之,我个人更喜欢使用代码而不是DB mumbo-jumbo,所以这就是我选择DLL方法的原因。

另外,您可以将源代码保存在源代码控制中,使用存储过程更加困难。

只是我的2c。