在数据库试验助手中捕获跟踪
注意
此工具将于 2024 年 12 月 15 日停用。 对于出现的任何问题,我们将停止支持此工具,并且不会发布任何缺陷修复或进一步更新。
可使用数据库试验助手 (DEA) 创建包含捕获服务器事件的日志的跟踪文件。 捕获的服务器事件是在特定时间段内在特定服务器上发生的事件。 每个服务器必须运行一次跟踪捕获。
在开始跟踪捕获之前,请确保备份所有目标数据库。
SQL Server 中的查询缓存可能会影响评估结果。 我们建议在服务应用程序中重启 SQL Server 服务 (MSSQLSERVER),以提高评估结果的一致性。
配置跟踪捕获
在 DEA 的左侧导航栏中,选择照相机图标,然后在“所有捕获”页上,选择“新建捕获”。
在“捕获详细信息”下的“新捕获”页上,输入或选择以下信息:
捕获名称:输入捕获的跟踪文件的名称。
格式:指定捕获的格式(跟踪或 XEvents)。
持续时间:选择要运行跟踪捕获的时间长度(以分钟为单位)。
捕获位置:选择跟踪文件的目标路径。
注意
跟踪文件的文件路径必须位于运行 SQL Server 的计算机上。 如果未为特定帐户设置 SQL Server 服务,则服务可能需要对要写入的跟踪文件的指定文件夹具有写入权限。
通过选择“是,我已手动执行备份...”复选框来确认已执行备份。
在“捕获详细信息”下,选择或输入以下信息:
- 服务器类型:指定 SQL Server 的类型(SqlServer、AzureSqlDb、AzureSqlManagedInstance)。
- 服务器名称:指定 SQL Server 的服务器名称或 IP 地址。
- 身份验证类型:选择“Windows”作为身份验证类型。
- 数据库名称:输入要对其启动数据库跟踪的数据库的名称。 如果未指定数据库,则会在服务器上的所有数据库上捕获跟踪。
根据具体应用场景,选择或取消选择“加密连接”和“信任服务器证书”复选框。
启动跟踪捕获
输入或选择必填信息后,选择“开始”启动跟踪捕获。
如果输入的信息有效,跟踪捕获过程将开始。 否则,带有无效条目的文本框将突出显示为红色。 如果确实遇到错误,请更正任何必要的条目,然后再次选择“开始”。
当跟踪捕获正在运行时,在“捕获详细信息”下,会显示跟踪捕获进程的状态和进度。
跟踪捕获完成后,新的跟踪 (.trc) 文件将保存在初始配置期间指定的“捕获位置”。
跟踪文件包括 SQL Server 数据库活动的跟踪结果。 .trc 文件旨在提供有关 SQL Server 检测到和报告的错误的详细信息。
有关跟踪捕获的常见问题
以下是一些有关 DEA 中跟踪捕获的常见问题解答。
问:在生产数据库上运行跟踪捕获时,会捕获哪些事件?
下表列出了 DEA 为跟踪收集的事件和相应的列数据:
事件名称 | 文本数据 (1) | 二进制数据 (2) | 数据库 ID (3) | 主机名 (8) | 应用程序名称 (10) | 登录名 (11) | SPID (12) | 开始时间 (14) | 结束时间 (15) | 数据库名称 (35) | 事件序列 (51) | IsSystem (60) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
RPC:Completed (10) | * | * | * | * | * | * | * | * | * | * | * | |
RPC:Starting (11) | * | * | * | * | * | * | * | * | * | * | ||
RPC 输出参数 (100) | * | * | * | * | * | * | * | * | * | * | ||
SQL:BatchCompleted (12) | * | * | * | * | * | * | * | * | * | * | * | |
SQL:BatchStarting (13) | * | * | * | * | * | * | * | * | * | * | ||
审核登录 (14) | * | * | * | * | * | * | * | * | * | * | * | |
审核注销 (15) | * | * | * | * | * | * | * | * | * | * | * | |
ExistingConnection (17) | * | * | * | * | * | * | * | * | * | * | * | |
CursorOpen (53) | * | * | * | * | * | * | * | * | * | * | ||
CursorPrepare (70) | * | * | * | * | * | * | * | * | * | * | ||
Prepare SQL (71) | * | * | * | * | * | * | * | * | * | |||
Exec Prepared SQL (72) | * | * | * | * | * | * | * | * | * | |||
CursorExecute (74) | * | * | * | * | * | * | * | * | * | * | ||
CursorUnprepare (77) | * | * | * | * | * | * | * | * | * | * | ||
CursorClose (78) | * | * | * | * | * | * | * | * | * | * |
问:跟踪捕获运行时是否对生产服务器产生性能影响?
是的,跟踪收集期间对性能有轻微影响。 在我们的测试中,我们发现大约有 3% 的内存压力。
问:捕获生产工作负荷上的跟踪需要哪些权限?
- 在 DEA 应用程序中运行跟踪操作的 Windows 用户必须在运行 SQL Server 的计算机上具有 sysadmin 权限。
- 运行 SQL Server 的计算机上的服务帐户必须对指定的跟踪文件路径具有写入访问权限。
问:是否可以捕获整个服务器的跟踪,还是只能在单个数据库上捕获跟踪?
可以使用 DEA 捕获服务器中所有数据库的跟踪,也可以捕获单一数据库的跟踪。
问:我在生产环境中配置了链接服务器。 这些查询是否显示在跟踪中?
如果要为整个服务器运行跟踪捕获,跟踪将捕获所有查询,包括链接服务器查询。 若要为整个服务器运行跟踪捕获,请将“新建捕获”下的“数据库名称”框留空。
问:生产工作负荷跟踪的最低建议时间是多少?
建议选择最能代表整个工作负荷的时间。 这样,分析将在工作负荷中的所有查询上运行。
问:在开始跟踪捕获之前执行数据库备份有多重要?
在开始跟踪捕获之前,请确保备份所有目标数据库。 将重播目标 1 和目标 2 中的捕获跟踪。 如果数据库状态不相同,则试验结果会偏斜。
问:是否可以收集 XEvents 而不是跟踪,是否可以重播 XEvents?
是的。 DEA 支持 XEvents。 下载最新版本的 DEA,并尝试一下。
排查跟踪捕获问题
如果在运行跟踪捕获时看到错误,请确认:
- 运行 SQL Server 的计算机的名称有效。 若要确认,请尝试使用 SQL Server Management Studio (SSMS) 连接到运行 SQL Server 的计算机。
- 防火墙配置不会阻止与运行 SQL Server 的计算机的连接。
- 用户具有重播 FAQ 中列出的权限。
- 跟踪名称不遵循标准滚动更新约定 (Capture_1)。 请尝试 Capture_1A 或 Capture1 等跟踪名称。
下面是一些可能遇到的错误,以及解决这些错误的解决方案:
可能的错误 | 解决方案 |
---|---|
无法在目标 SQL Server 上启动跟踪,请检查你是否具有所需的权限,并且 SQL Server 帐户是否对指定跟踪文件路径 Sql 错误代码 (53) 具有写入访问权限 | 运行 DEA 工具的用户必须有权访问运行 SQL Server 的计算机。 必须为用户分配 sysadmin 角色。 |
无法在目标 SQL Server 上启动跟踪,请检查你是否具有所需的权限,并且 SQL Server 帐户是否对指定跟踪文件路径 Sql 错误代码 (19062) 具有写入访问权限 | 指定的跟踪路径可能不存在,或者文件夹没有运行 SQL Server 服务的帐户(例如 NETWORK SERVICE)的写入权限。 路径必须存在,并且必须具有启动跟踪所需的权限。 |
DEA 跟踪当前在目标服务器上运行。 | 活动跟踪已在目标服务器上运行。 当服务器范围的跟踪已运行时,无法启动新的跟踪。 |
无法打开请求的数据库来捕获跟踪。 此错误可能是由不正确的数据库名称引起的。 | 指定的数据库不存在,或者当前用户无法访问。 使用正确的数据库名称。 |
如果看到标记为“Sql 错误代码”的任何其他错误,请参阅数据库引擎错误以获取详细说明。
另请参阅
- 若要在重播捕获的跟踪之前了解如何在 SQL Server 中配置 Distributed Replay 工具,请参阅为数据库试验助手配置 Distributed Replay。