SQL Server PROFILER

2025年3月17日 | 阅读 7 分钟

SQL Profiler 是 Microsoft SQL Server 关系数据库管理系统中的一个图形用户界面 (GUI) 工具,**允许我们监控、分析、故障排除、重现和跟踪 SQL 数据库及其环境中的问题**。它首次出现在 SQL Server 2000 版本中。它跟踪特定数据库引擎上的活动或操作。本文将讨论 Profiler、它的工作原理、优点和缺点以及替代方案。

**开发人员和数据库管理员可以使用 Profiler 来创建和处理跟踪,以及重放和分析跟踪结果**。它就像一个仪表板,显示 Microsoft SQL Server 实例的运行状况。Profiler 将事件保存在跟踪文件中,这些文件可以稍后进行分析或用于重放特定的步骤序列来诊断问题。我们还可以安排跟踪在特定时间运行,例如,设置一个跟踪每天早上 9 点运行,以比较数据库处于活动状态或空闲状态时的性能。我们还可以设置另一个跟踪在凌晨 1 点运行,此时数据库活动很少或没有活动。

SQL Server Profiler 允许 DBA 执行以下任务:

  • 创建跟踪
  • 在跟踪运行时查看结果。
  • 将跟踪结果存储在表中
  • 根据需要启动、停止、暂停和编辑跟踪结果
  • 重放跟踪结果

SQL Server 中的 Profiler 如何工作?

Profiler 是一个独立的软件工具,随 SQL Server 安装设置一起安装在系统上。它通过为 DBA 提供对系统操作的高级视角来运行。DBA 创建跟踪以记录数据、监控故障和其他问题,然后使用 Profiler 来保存、检索和以图形方式查看结果,以便进行故障排除和修复。此功能完全在客户端进行,这意味着它使用与正在监视的同一台计算机上的资源。我们可以使用 Windows 资源管理器或 SQL Server Management Studio 来访问 Profiler。

如果我们使用的是 **Windows 10**,则在开始菜单中键入 SQL Server Profiler。我们将在结果中看到该应用程序,如下所示:

SQL Server PROFILER

我们也可以在 SQL Server Management Studio 中打开此工具。要启动 Profiler,请打开 **Management Studio**,导航到 **Tools**(工具)菜单。在此菜单下,我们将找到 Profiler 选项,如下面的图像所示:

SQL Server PROFILER

PROFILER 的优势

以下是 Profiler 对开发人员和 DBA 最重要的好处:

  • 清晰性:它显示了实例如何与客户端进行交互。
  • 故障排除:它允许我们保存和重放关键事件,这有助于我们识别问题区域。它也有助于压力测试和查找执行时间长的查询。
  • 允许非管理员安全地创建跟踪。
  • 它还保存 SQL、SSIS 和 Analysis Services 的跟踪。
  • 将活动与基线进行比较:它允许用户保存跟踪数据并与新数据进行比较,以识别新问题。

如何使用 PROFILER?

当我们打开 Profiler 时,它会要求进行身份验证。在这里,我们需要填写详细信息,例如**服务器类型**(您想连接到 Analysis Service 实例还是 Database Engine)、**服务器名称、身份验证类型**和**凭据**,如下面的图像所示:

SQL Server PROFILER

当我们单击 **Connect**(连接)按钮时,连接将建立,并且屏幕上会出现一个新的跟踪表单。在这里,我们将看到两个选项卡,分别是 **General**(常规)选项卡和 **Events Selection**(事件选择),如下所示:

SQL Server PROFILER

常规选项卡

它**用于设置跟踪**数据库引擎。默认情况下,会选择 General(常规)选项卡,我们需要在此输入跟踪名称。跟踪提供程序名称和服务器名称是预定义的,无法编辑。在提供名称后,我们选择是将跟踪结果保存到表还是外部文件中。当我们勾选“**Save to Table**”(保存到表)选项时,它会连接服务器并询问要将该跟踪表信息保存在哪个数据库中。此外,我们还可以根据需要通过勾选“**Enable trace stop time**”(启用跟踪停止时间)来选择性地在特定日期/时间暂停跟踪。

模板是 Profiler 跟踪捕获的一组调优事件。在这里,我们可以看到各种预定义模板,例如 T-SQL 和 Tuning、Standard(标准,默认)模板以及 Blank(空白)模板,后者允许我们从头开始。我们还可以根据需要从下拉菜单中选择跟踪模板。

事件选项卡

事件是数据库引擎上执行的**操作**。Event(事件)选项卡用于添加或删除选定的事件以进行监视。Profiler 工具可以跟踪所有事件,每个事件都根据特定的事件类进行分类。一些**示例**包括 BatchCompleted、Batch Starting、Audit Login、Audit Logout、Lock: Acquired、Lock: Released 等。下图解释了事件选项卡的每个部分:

SQL Server PROFILER

第 1 部分是所选跟踪的预览,显示事件和列。它还允许我们根据需要选择适当的复选框。第 2 部分显示所选事件和事件类的详细信息。如果我们勾选 **第 3 部分复选框**,我们将在第 1 部分中获得所有事件和列的完整列表。第 4 部分类似于自定义,提供了列过滤器和组织列的选项。

当我们单击“**Column Filter**”(列过滤器)按钮时,它允许我们使用 like 或 not like 等条件来过滤要保存的更多数据。完成过滤后,单击 OK 退出编辑过滤器窗口并保存更改。这是图像:

SQL Server PROFILER

当我们单击“**Organize Column**”(组织列)按钮时,它允许我们组织和分组列。完成所有操作后,单击 OK 按钮以保存更改。

SQL Server PROFILER

注意:一旦跟踪收集过程开始,我们就无法对列进行任何更改,例如分组和排序。

最后,单击 **Run**(运行)按钮以完成服务器内的任务。现在,我们可以以表格方式监视具有各种属性的服务器数据。我们还可以从 Profiler 窗口底部查看跟踪是否正在运行。

数据库引擎调优顾问

它是 SQL Server 的一个工具,允许读取和分析 Profiler 创建的跟踪。我们可以通过 SQL Server Management Studio 访问它。此工具接受 Profiler 跟踪作为输入。跟踪中捕获的操作会做出某些优化数据库引擎效率的建议(丢失的索引、分区等)。

弃用和替代方案

根据官方文档,用于数据库引擎的 SQL Server Profiler 已被弃用。此功能可能会在未来的 MS SQL Server 版本中被删除,建议不要再使用此功能。但是,我们仍然可以使用此工具来跟踪 Analysis Services,因为其工作负载尚未被弃用。它们弃用了两个操作:Trace(跟踪)和 Replay(重放)。

在弃用 Trace 和 Replay 功能后,Microsoft 选择为这些操作构建一项新功能。他们建议使用 Extended Events 来构建数据库引擎上的跟踪,并使用 Distributed Replay 来完成重放操作。他们仍然建议使用 SQL Server Profiler 来构建 Analysis Services 实例上的跟踪和重放。

执行与 SQL Server Profiler 类似功能的一些其他替代方案是:

Prefix:此工具具有一个出色的功能,可以直接从应用程序代码中检查 SQL 查询,以获得不仅正确而且上下文相关的见解。它是完全免费的,功能非常强大,并提供所有 Web 请求的详细跟踪。

ExpressProfiler:它是 SQL Server Profiler 的一个简单开源的绝佳替代品。它使用简单、快速的图形用户界面。它也被称为 SqlExpress Profiler。

Neor Profile SQL:它是一个充当代理服务器的应用程序,拦截客户端的所有请求。这种技术使我们能够控制对数据库的整个访问并发现查询瓶颈。它为 MySQL 用户提供类似的功能。

Server Side Trace:它在服务器上运行,并像 Profiler 一样保存跟踪数据,但使用 T-SQL 脚本捕获。

SQL Server Profiler 中的重放

SQL Server Profiler 提供了一个重放功能,允许我们根据需要保存跟踪并重放它。在对应用程序进行故障排除时,这非常重要。SQL Server Profiler Replay(重放)菜单提供了 Toggle Breakpoint(切换断点)和 Run to Cursor(运行到光标)选项用于调试。

Profiler 将监视在 SQL Server Management Studio 中所做的所有更改。因此,它也可用于测试数据库性能。SQL Server 还提供了“SQL Server Performance Monitor”(SQL Server 性能监视器)来监视系统和服务器的性能。

结论

本文将介绍名为 Profiler 的旧 SQL Server 跟踪工具。在这里,我们还了解了它的用例以及可以集成到其中的其他 SQL Server 工具。它还提到了 Profiler 工具的优点及其在数据库引擎跟踪中被弃用后可以使用的替代方案。


下一个主题SQL Server 函数