在命令提示符中运行数据库试验助手

注意

此工具将于 2024 年 12 月 15 日停用。 对于出现的任何问题,我们将停止支持此工具,并且不会发布任何缺陷修复或进一步更新。

本文介绍如何在数据库试验助手 (DEA) 中捕获跟踪,然后通过命令提示符分析结果。

注意

若要详细了解每个 DEA 操作,请运行以下命令:

Deacmd.exe -o <operation> --help

需要操作名称。 有效操作包括 AnalysisStartCaptureStopCapture

使用 DEA 命令启动新的工作负荷捕获

若要启动新的工作负荷捕获,请在命令提示符中运行以下命令:

Deacmd.exe -o StartCapture -n <Trace FileName> -x <Trace Format> -h <SQLServerInstance> -f <database name> -e <Encrypt Connection> -m <Authetication Mode> -u <user name> -p <password> -l <Location of Output Folder> -d <duration>

例如:

Deacmd.exe -o StartCapture -n sql2008capture -x 0 -h localhost -f adventureworks -e --trust -m 0 -l c:\test  -d 60

使用 Deacmd.exe 命令启动新的工作负荷捕获时,可以使用以下选项:

选项 说明
-n--name 必需。 跟踪文件名。
-x--format 必需。 跟踪的格式(0 = 跟踪,1 = XEvents)。
-d--duration 必需。 最长捕获时间单位(分钟)。
-l--location 必需。 用于在主计算机上存储跟踪或 XEvent 文件的输出文件夹的位置。
-t--type 默认值:0。 SQL Server 的类型(0 = SqlServer,1 = AzureSQLDB,2 = Azure SQL 托管实例)。
-h--host 必需。 要启动捕获的 SQL Server 主机名或实例名称。
-e--encrypt 默认值:True。 加密与 SQL Server 实例之间的连接。
--trust 默认值: False。 连接到 SQL Server 实例时信任服务器证书。
-f--databasename 要筛选跟踪的数据库的名称(如果未指定捕获在所有数据库上启动)。
-m--authmode 默认值:0。 身份验证模式(0 = Windows, 1 = Sql 身份验证)。
-u--username 连接 SQL 服务器的用户名。
-p--password 连接到 SQL Server 的密码。

重播工作负荷捕获

如果使用 Distributed Replay,请执行以下步骤。

  1. 登录到 Distributed Replay 控制器计算机。

  2. 若要将使用 DEA 命令捕获的工作负荷跟踪转换为 IRF 文件,请运行以下命令:

    DReplay preprocess -m "dreplaycontroller" -i "Path to first trace file" -d "<Folder path on controller>\IrfFolder"
    
  3. 使用 StartReplayCaptureTrace.sql 在运行 SQL Server 的目标计算机上启动跟踪捕获。

    a. 在 SQL Server Management Studio (SSMS) 中,打开 <Dea_InstallPath>\Scripts\StartReplayCaptureTrace.sql

    b. 运行 Set @durationInMins=0 以便跟踪捕获不会在指定时间后自动停止。

    c. 若要设置每个跟踪文件的最大文件大小,请运行 Set @maxfilesize。 建议大小为 200 MB。

    d. 编辑 @Tracefile 以设置跟踪文件的唯一名称。

    e. 如果必须仅在特定数据库上捕获工作负荷,则编辑 @dbname 以指定数据库名称。 默认情况下,捕获整个服务器上的工作负荷。

  4. 若要针对目标 SQL Server 实例重播 IRF 文件,请运行以下命令:

    DReplay replay -m "dreplaycontroller" -d "<Folder Path on Dreplay Controller>\IrfFolder" -o -s "SQL2016Target" -w "dreplaychild1,dreplaychild2,dreplaycild3,dreplaychild4"
    

    a. 要监视状态,请运行下面的命令:

    DReplay status -f 1
    

    b. 若要停止重播,例如,如果看到传递百分比低于预期,请运行以下命令:

    DReplay cancel
    
  5. 停止目标 SQL Server 实例上的跟踪捕获。

  6. 在 SSMS 中,打开 <Dea_InstallPath>\Scripts\StopCaptureTrace.sql

  7. 编辑 @Tracefile 以匹配运行 SQL Server 的目标计算机上的跟踪文件路径。

  8. 针对运行 SQL Server 的目标计算机运行脚本。

使用 InBuilt Replay

如果使用 InBuilt Replay,则无需设置 Distributed Replay。 在命令提示符中使用 InBuilt Replay 的功能正在开发中。 目前,可以使用 GUI 通过 InBuilt Replay 运行重播。

使用 DEA 命令分析跟踪

若要启动新的跟踪分析,请运行以下命令:

Deacmd.exe -o analysis -a <Target1 trace filepath> -b <Target2 trace filepath> -r reportname -h <SQLserverInstance> -e <encryptconnection> -u <username>

例如:

Deacmd.exe -o analysis -a C:\Trace\SQL2008Source\Trace.trc -b C:\ Trace\SQL2014Trace\Trace.trc -r upgrade20082014 -h localhost -e

若要查看这些跟踪文件的分析报告,需要使用 GUI 查看图表和组织指标。 但是,分析数据库将写入指定的 SQL Server 实例,因此还可以直接查询生成的分析表。

使用 DEA 命令分析跟踪时,可以使用以下选项:

选项 说明
-a--traceA 必需。 A 实例的事件文件的文件路径。 示例:C:\traces\Sql2008trace.trc。 如果有一批文件,请选择第一个文件和 DEA 自动检查滚动更新文件。 如果文件位于 Blob 中,请提供要将事件文件存储在本地的文件夹路径。 示例:C:\traces\
-b--traceB 必需。 B 实例的事件文件的文件路径。 示例:C:\traces\Sql2014trace.trc。 如果有一批文件,请选择第一个文件和 DEA 自动检查滚动更新文件。 如果文件位于 Blob 中,请提供要将事件文件存储在本地的文件夹路径。 示例:C:\traces\
-r--ReportName 必需。 当前分析的名称。 由此名称标识生成的分析报告。
-t--type 默认值:0。 SQL Server 的类型(0 = SqlServer,1 = AzureSQLDB,2 = Azure SQL 托管实例)。
-h--host 必需。 SQL Server 主机名或实例名。
-e--encrypt 默认值:True。 加密与 SQL Server 实例之间的连接。
--trust 默认值: False。 连接到 SQL Server 实例时信任服务器证书。
-m--authmode 默认值:0。 身份验证模式(0 = Windows, 1 = Sql 身份验证)。
-u--username 连接 SQL 服务器的用户名。
--p 连接到 SQL Server 的密码。
--ab 默认值: False。 跟踪 A 的存储位置位于 blob 中。 如果使用,还必须指定 --abu (Trace A Blob Url)
--bb 默认值: False。 跟踪 B 的存储位置位于 blob 中。 如果使用,还必须指定 --bbu (Trace B Blob Url)
--abu 包含 SAS 密钥的 A 实例的 blob URL。
--bbu 包含 SAS 密钥的 B 实例的 blob URL。

另请参阅