【发布时间】:2014-04-19 17:48:09
【问题描述】:
我使用的是 SQL Server 2008 R2。我有一个通过xp_command shell 运行bcp 的存储过程。在我的带有数据库副本的笔记本电脑上,拥有 50000 条记录的作业几乎是即时的,bcp 的性能是每秒 71K 行。
我在服务器上运行完全相同的存储过程,它需要 1 小时 51 分钟,bcp 性能是每秒 7 行(因此慢了 10,000 倍)。选择数据的查询在服务器 BTW 上运行不到一秒钟。这发生在上周,我们重新启动了 SQL Server 实例,它在服务器上再次运行得非常快。大约 5 天后,性能再次变慢,但重启 SQL 实例没有帮助。
我的命令是:
bcp "exec DBNAME.dbo.SPNAME 224,1 "
queryout "\\Server\path\OUTPUT\11111.txt" -c -t\t -Usa -P"PASSWORD" -SSQLSERVER
如果我运行活动监视器,我会看到我的存储过程进程并显示为 RUNNABLE。
服务器位于具有 4 个内核和 28GB RAM 的 VM 上。
如果我从 dos shell 运行相同的 bcp 命令,我会得到相同的结果。
我现在不知道该去哪里找。有人有什么建议吗?
TIA
标记
【问题讨论】:
-
不写入UNC共享(\\Server\path\OUTPUT\11111.txt)而是直接放在C:\ SQL 服务器?这会告诉你它是否是网络。
-
这实际上是一个本地驱动器。我确实尝试使用驱动器号。有同样的表现
-
查找的逻辑位置是索引。如果您的本地 PC 上有服务器没有的索引,则可能会发生这种情况。
-
索引是相同的。正如我在帖子中提到的,数据库是服务器的副本,选择数据的查询在服务器上运行不到一秒钟。