Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用T-SQL sp执行SQL任务,还是从SSMS执行sp,哪一个性能更好?_Sql Server_Ssis - Fatal编程技术网

Sql server 使用T-SQL sp执行SQL任务,还是从SSMS执行sp,哪一个性能更好?

Sql server 使用T-SQL sp执行SQL任务,还是从SSMS执行sp,哪一个性能更好?,sql-server,ssis,Sql Server,Ssis,我有一个T-sql存储过程,它将数百万条记录插入到sql Server表中。我有两个选项来执行这个存储过程 使用SP执行SSIS执行SQL任务 在SSMS中执行Sp 哪一个执行速度更快,性能更好 通过评论 SP将CSV文件加载到SQl 2000数据库中。计划使用SSIS 2005将csv迁移到sql 2000表,因此哪种方法更好?您也可以使用.NET库调用存储过程,从命令行OSQL、SQLCMD等调用它,在sql代理作业中启动它,但调用程序一点也不重要 最终,SQL Server数据库引擎将收到

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

使用SP执行SSIS执行SQL任务 在SSMS中执行Sp 哪一个执行速度更快,性能更好

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

您也可以使用.NET库调用存储过程,从命令行OSQL、SQLCMD等调用它,在sql代理作业中启动它,但调用程序一点也不重要

最终,SQL Server数据库引擎将收到您希望运行存储过程的请求,对于相同的参数,无论调用方是谁,它都将使用相同的查询计划

如果您正在观察差异,请查看Erland的文章:

所以,您真正的问题似乎是关于加载CSV。无论存储过程是如何启动的,您的存储过程方法仍应提供相同的性能。只要您有一个固定的CSV文件,您就不会试图编写通用的导入文件,通过使用实际的数据流任务,您可能会获得更好的性能。排除故障肯定会更容易


对于一些未经询问的建议,如果您刚刚开始脱离SQLServer2000,请跳过2005,前往SQLServer2008R2。已经发生了2000年。2005年将于2016年到期。从2000年迁移到2008年,许可成本的变化应该不会太大,R2应该不会太大。不过2012年,这将花费一大笔钱。遗憾的是,这是一种美。

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

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


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

因此,对于1,您将在脚本中包含SP代码,还是使用EXEC SP?您想实现什么?SP将CSV文件加载到SQl 2000数据库中。计划使用ssis 2005将CSV迁移到SQl 2000表,那么哪种方法更好?我会使用服务器作业。您可以轻松地检查进度,但无需保持BIDS/SSM的开放性2012只会在处理器超过4核的情况下增加成本。或者,如果您使用的是不再是选项的Enterprise+CAL。