我想运行 sql profiler 来查看我的数据库 Sql Server 2008 的性能,但我担心在同一台机器上运行 profiler 会影响服务器的性能,我不想减慢服务器的速度.
很久以前,我从一位 DBA 那里听说,他从连接到 sql 服务器的笔记本电脑上运行分析器,以不影响服务器性能的方式。
基本上我的问题是如何从外部计算机运行 Sql profiler 而不会导致 sql server 性能下降?
我想运行 sql profiler 来查看我的数据库 Sql Server 2008 的性能,但我担心在同一台机器上运行 profiler 会影响服务器的性能,我不想减慢服务器的速度.
很久以前,我从一位 DBA 那里听说,他从连接到 sql 服务器的笔记本电脑上运行分析器,以不影响服务器性能的方式。
基本上我的问题是如何从外部计算机运行 Sql profiler 而不会导致 sql server 性能下降?
任何被分析的数据库都必须做一些工作才能进行分析 - 没有办法绕过它。一般来说,对系统的观察总是会对该系统产生负荷。但是,SQL Server Profiler 和其他类似工具也在目标数据库之外做额外的工作,这些额外的工作可以卸载到另一台计算机上。
为了减轻负担,您只需从任何不是数据库服务器的机器上运行 SQL Server Profile。当您启动一个新跟踪时,您告诉它连接到运行数据库的任何服务器上的数据库。这里的所有都是它的。您的目标数据库将产生一些额外的负载(不可避免),但您将尽可能多地将工作卸载到运行 Profiler 的任何机器上。
如果您能够从外部计算机连接到计算机,那么远程运行分析器也不会出现问题..
所以基本上我的问题是如何从外部计算机运行 Sql profiler 而不会导致 sql server 性能下降?
当您长时间运行分析器时,它会影响性能,因为它必须跟踪内存中的所有事件并在丢弃之前记录它..所以不建议长时间运行分析器..
您还可以使用从 SQL2008 开始的扩展事件(相对于 profiler 非常轻量级)来跟踪类似于 Profiler 的事件。
http://www.sqlteam.com/article/introduction-to-sql-server-2008-extended-events
Profiler 可以从任何具有适当权限和访问权限的计算机启动,但它始终在实际的 SQL Server 实例上运行。没有办法解决这个问题。您可以最小化由特定用户记录和过滤的操作以减轻性能问题,但仅此而已。
有问题的 DBA 可能已经运行了服务器端跟踪,这可能影响较小,但它仍然在适用的实例上启动。
如果要尽量减少 SQL Trace 的影响,那么最好使用服务器端跟踪: https ://msdn.microsoft.com/en-us/library/cc293613.aspx
像这样,您可以将 SQL 命令记录到跟踪文件中,并关闭 SQL Profiler。完成 SQL 命令集合后,您可以复制跟踪文件并在其他计算机上使用 SQL Profiler 打开它。它比直接通过 SQL Profiler 运行 SQL Trace(称为客户端跟踪)要好得多。