使用T-SQL sp执行SQL任务或从SSMS执行Sp,哪一个性能更好?

时间:2013-07-19 11:16:02

标签: sql-server ssis

我有一个T-sql存储过程,它将数百万条记录插入到SQL Server表中。我有2个选项来执行此存储过程

  1. 使用SP
  2. 执行SSIS“执行SQL任务”
  3. 在SSMS中执行Sp
  4. 哪一个会执行得更快,并提供更好的性能?

    (通过评论) SP将CSV文件加载到SQl 2000数据库中。计划使用SSIS 2005将csv迁移到sql 2000表,那么哪种方法会更好

2 个答案:

答案 0 :(得分:3)

您还可以使用.NET库调用存储过程,从命令行(OSQL,SQLCMD等)调用它,在SQL Agent作业中启动它,但调用程序无关紧要。

最终,SQL Server数据库引擎将收到您要运行存储过程的请求,对于相同的参数,无论调用者如何,它都将使用相同的查询计划。

如果您正在观察差异,请查看Erland的文章:Slow in the application, Fast in SSMS

所以,你真正的问题似乎是关于加载CSV。无论如何启动,您的存储过程方法仍应提供相同的性能。只要你有一个固定的CSV文件(你没有尝试编写通用导入 - 任何东西),你可以通过使用实际的Data Flow Task来获得更好的性能。排除故障肯定会更容易。

对于一些未经提出的建议,如果您刚刚开始退出SQL Server 2000,请跳过2005并前往SQL Server 2008 R2。 SQL Server end of life已经发生在2000年。2005年将在2016年到期。许可成本的变化应该不会很差,从2000年到2008年R2的迁移不应该是坏事。 2012年,这将花费相当多的钱。可惜,因为它是一种美丽。

答案 1 :(得分:2)

如果服务器上安装的BIDS是32位且服务器本身是64位,那么可能会有区别。

从SSIS包运行然后将使用32位 - 这也设置了它可以使用的最大RAM的限制。

同时,当您运行与服务器作业相同的包时,它将使用64位可用的所有内存。这基本上适用于数据流,但是MIGHT也会对SQL任务产生影响。