在数据库实验助手中捕获踪迹
注意
此工具于 2024 年 12 月 15 日 停用。 我们已停止支持此工具解决出现的任何问题,并且不会发出任何 bug 修复或进一步更新。
可以使用数据库试验助手(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:完成 (10) | 不 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 |
RPC:Starting (11) | 不 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 不 | 是的 | 是的 | 是的 |
RPC 输出参数 (100) | 是的 | 不 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 不 | 是的 | 是的 | 是的 |
SQL:BatchCompleted (12) | 是的 | 不 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 |
SQL:BatchStarting (13) | 是的 | 不 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 不 | 是的 | 是的 | 是的 |
审核登录 (14) | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 不 | 是的 | 是的 | 是的 |
审核注销 (15) | 是的 | 不 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 |
ExistingConnection (17) | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 不 | 是的 | 是的 | 是的 |
CursorOpen (53) | 是的 | 不 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 不 | 是的 | 是的 | 是的 |
CursorPrepare (70) | 是的 | 不 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 不 | 是的 | 是的 | 是的 |
准备 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 的计算机的连接。
用户具有 重播常见问题解答中列出的权限。
跟踪名称不遵循标准轮换约定(Capture_1)。 相反,请尝试诸如 Capture_1A 或 Capture1 之类的跟踪名称。
下面是一些可能的错误,以及解决这些错误的解决方案:
可能的错误 | 解决方案 |
---|---|
无法在目标 SQL Server 上启动跟踪,请检查你是否具有所需的权限,并且 SQL Server 帐户是否具有对指定跟踪文件路径 Sql 错误代码(53) 的写入访问权限 | 运行 DEA 工具的用户必须有权访问运行 SQL Server 的计算机。 必须为用户分配 sysadmin 角色。 |
无法在目标 SQL Server 上启动跟踪,请检查你是否具有所需的权限,以及 SQL Server 帐户是否具有对指定跟踪文件路径 Sql 错误代码(19062)的写入访问权限 | 指定的跟踪路径可能不存在,或者文件夹没有运行 SQL Server 服务的帐户(例如网络服务)的写入权限。 路径必须存在,并且必须具有启动跟踪所需的权限。 |
DEA 跟踪当前在目标服务器上运行。 | 活动跟踪已在目标服务器上运行。 当服务器范围的跟踪已运行时,无法启动新的跟踪。 |
无法打开请求的数据库以捕捉跟踪记录。 此错误可能是由不正确的数据库名称引起的。 | 指定的数据库不存在,或者当前用户无法访问。 使用正确的数据库名称。 |
如果看到 Sql 错误代码标记的任何其他错误,请参阅 数据库引擎事件和错误 获取详细说明。