-1

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

  1. 使用 SP 执行 SSIS“执行 SQL 任务”
  2. 在 SSMS 中执行 Sp

哪一个会执行得更快,并提供更好的性能?

(通过评论)SP 将 CSV 文件加载到 SQl 2000 数据库中。打算用SSIS 2005 将csv迁移到sql 2000表中,那用什么方法比较好

4

2 回答 2

3

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

最终,SQL Server 数据库引擎将收到您想要运行存储过程的请求,并且对于相同的参数,它将使用相同的查询计划,而不管调用者是谁。

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

所以,你真正的问题似乎是关于加载 CSV。无论它是如何启动的,您的存储过程方法仍应为您提供相同的性能。只要你有一个固定的 CSV 文件(你不是想写一个通用的 import-anything),你可能会通过使用一个实际的Data Flow Task. 排除故障肯定会更容易。

对于一些未经询问的建议,如果您刚刚开始退出 SQL Server 2000,请跳过 2005 年并前往 SQL Server 2008 R2。SQL Server 2000 年的生命周期已经结束。2005 年将在 2016 年到期。许可成本的变化应该不错,从 2000 迁移到 2008 R2 应该不错。不过,2012年,这将花费一分钱。可惜,因为是美女。

于 2013-07-19T11:36:20.650 回答
2

如果服务器上安装的 BIDS 是 32 位,而服务器本身是 64 位,则可能会有所不同。

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

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

于 2013-07-19T11:37:29.490 回答