【问题标题】:Very large Redgate SQL script runs for a long time in SQL Server非常大的 Redgate SQL 脚本在 SQL Server 中运行很长时间
【发布时间】:2018-05-05 01:23:57
【问题描述】:

我们正在使用 Redgate SQL Data Compare 12 进行迁移。它正在生成大约 800+ MB 的脚本。我们使用 sqlcmd 处理脚本。

确切的命令是:

sqlcmd -i [path to SQL script file] -a 32767 -d [db name] -x -o script<#>.log

此脚本需要 10 1/2 小时才能完成,但已成功完成。该脚本与许多 10 的表相反。对于超过 500 MB 的单个表,还有第二个脚本,它只需要大约 5-10 分钟即可运行,我们在第一个脚本之后运行。

服务器是一个虚拟机,有 16 GB 的内存。从 SQL Server 内存选项卡:

最小内存 = 8172

最大内存 = 2147483647

我不是 dba,我是一名网络开发人员。任何关于我可以谷歌检查以使这件事运行得更快的东西的提示将不胜感激!

【问题讨论】:

  • 不看脚本。我的猜测是索引可能会导致在表中插入缓慢。

标签: sql sql-server optimization redgate


【解决方案1】:

如果看不到脚本,就无法说明为什么大小为 800 MB 的脚本需要更长的时间而 500MB 的脚本需要更少的时间..

一种方法是检查等待统计信息。下面的 DMV 会给你提示

select status,blocking_session_id,wait_resource,
wait_type,last_wait_type from
sys.dm_Exec_requests

上面的 DMV 提供了等待类型、时间和阻塞状态的信息

上面的DMV需要传递sessionid,如果你只有脚本运行,那么你不需要sessionid,但是如果正在使用服务器,你可以使用下面的dmv来获取sessionid

select * from sys.dm_exec_sessions 
where PROGRAM_NAME='sqlcmd'

【讨论】:

  • 我应该在长时间运行的脚本运行时运行那个 SQL,对吧?
  • 很遗憾,脚本的内容是保密的。但是,如果您认为我可以在脚本中查找某些内容,我可以检查一下。
  • 先尝试检查 DMV 看看是否有锁定/阻塞。如果没有锁定/阻塞,那么检查脚本是有意义的
猜你喜欢
  • 2023-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 2010-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多