使用 SQLCMD 运行查询与使用 SSMS 运行查询

roy*_*oyv 5 sql-server ssms sqlcmd

我注意到一些我不确定的事情。难道直接使用 SSMS 运行查询比使用 SQLCMD 运行查询快得多?我注意到使用 SSMS 运行的查询结果写入磁盘的速度要快得多。

有什么区别?

谢谢。

Aar*_*and 3

差异可能是由于SET设置造成的,例如SET ARITHABORT. 发生的情况是,在决定要使用的计划时会考虑这些设置,有时您可能会因一种设置而陷入非常糟糕的计划(这可能是因为该应用程序使用了非最佳参数),而相反设置有一个好的计划。

您可以在查询运行时通过检查 sys.dm_exec_requests 和 sys.dm_exec_sessions 来发现正在使用的设置。后者具有用于各种设置的列(但您必须从前者中找出 session_id)。一旦发现差异,您可以从 sqlcmd 手动将设置设置为“更好”设置,并希望您现在获得更好的计划。或者,您可以简单地发出命令WITH RECOMPILE来避免参数嗅探问题。

需要仔细阅读的真正有用的资源是:

应用程序慢,SSMS 快?