运行 SQL Server Profiler 所需的权限

适用于:SQL ServerAzure SQL 托管实例

默认情况下,用户运行 SQL Server Profiler 所需的权限与执行用于创建跟踪的 Transact-SQL 存储过程所需的权限相同。 若要运行 SQL Server Profiler,用户必须拥有 ALTER TRACE 权限。 有关详细信息,请参阅 GRANT 服务器权限 (Transact-SQL)

重要

由 SQL 跟踪捕获以及通过其他方法(例如,动态管理视图和函数(DMV、DMF)以及扩展事件)捕获的查询计划和查询文本可以包含敏感信息。 因此,权限 ALTER TRACE、SHOWPLAN 以及涵盖的权限 VIEW SERVER STATE 应仅授予那些需要这些权限来使工作运转的人员(基于最低权限原则)。

此外,建议您最好将包含显示计划相关事件的显示计划文件或跟踪文件保存到使用 NTFS 文件系统的某个位置,并且只允许有权查看潜在敏感信息的用户对之进行访问。

重要

已弃用 SQL 跟踪和 SQL Server Profiler。 包含 Microsoft SQL Server 跟踪和重播对象的“Microsoft.SqlServer.Management.Trace”命名空间也已遭弃用。

在 SQL Server的未来版本中将删除此功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。

请改用扩展事件。 有关扩展事件的详细信息,请参阅快速入门:SQL Server 中的扩展事件SSMS XEvent 探查器

注意

不支持针对 Analysis Services 工作负载的 SQL Server Profiler。

注意

尝试从 SQL Server Profiler 连接到 Azure SQL 数据库时,会错误地引发误导性错误消息,如下所示:

  • 若要对 SQL Server 运行跟踪,你必须是 sysadmin 固定服务器角色的成员或拥有 ALTER TRACE 权限。

该消息应说明了 SQL Server Profiler 不支持 Azure SQL 数据库。

用于重播跟踪的权限

重播跟踪也要求重播跟踪的用户拥有 ALTER TRACE 权限。

但是,如果重播期间在重播的跟踪中遇到审核日志事件,SQL Server Profiler 将使用 EXECUTE AS 命令。 SQL Server Profiler 使用 EXECUTE AS 命令模拟与登录事件关联的用户。

如果 SQL Server Profiler 在重播的跟踪中遇到登录事件,将执行下列权限检查:

  1. 拥有 ALTER TRACE 权限的用户 1 开始重播跟踪。

  2. 在重播的跟踪中遇到用户 2 的登录事件。

  3. SQL Server Profiler 使用 EXECUTE AS 命令模拟用户 2。

  4. SQL Server 尝试验证用户 2 的身份,根据结果的不同会出现下列情况之一:

    1. 如果用户 2 无法通过身份验证,SQL Server Profiler 将返回一个错误,并以用户 1 的身份继续重播跟踪。

    2. 如果用户 2 成功通过身份验证,将以用户 2 的身份继续重播跟踪。

  5. 检查用户 2 对目标数据库的权限,根据结果的不同会出现下列情况之一:

    1. 如果用户 2 拥有对目标数据库的权限,则模拟成功,并以用户 2 的身份重播跟踪。

    2. 如果用户 2 不拥有对目标数据库的权限,则服务器将检查该数据库的 Guest 用户。

  6. 将检查目标数据库中是否存在 Guest 用户,根据结果的不同会出现下列情况之一:

    1. 如果 Guest 帐户存在,将以 Guest 帐户重播跟踪。

    2. 如果目标数据库中不存在 Guest 帐户,将返回一个错误,并以用户 1 的身份重播跟踪。

以下关系图说明了重播跟踪时此检查权限的过程:

SQL Server Profiler replay trace permissions.

另请参阅