默认情况下,用户运行 SQL Server Profiler 所需的权限与执行用于创建跟踪的 Transact-SQL 存储过程所需的权限相同。 若要运行 SQL Server Profiler,必须授予 ALTER TRACE
用户权限。 有关详细信息,请参阅 GRANT 服务器权限。
注意
已弃用 SQL 跟踪和 SQL Server Profiler。 包含 Microsoft SQL Server 跟踪和重播对象的Microsoft.SqlServer.Management.Trace
命名空间也已弃用。
在 SQL Server的未来版本中将删除此功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。
请改用扩展事件。 有关 扩展事件概述的详细信息,请参阅 快速入门:扩展事件 和使用 SSMS XEvent Profiler。
注解
查询计划和查询文本由 SQL 跟踪捕获,也可以通过其他方法(例如动态管理视图(DMV)、动态管理功能(DMF)和扩展事件)捕获,这些信息可能包含敏感信息。 因此,权限和涵盖权限
ALTER TRACE
SHOWPLAN
VIEW SERVER STATE
应仅授予需要这些权限才能履行其工作职能的用户,具体取决于最低权限原则。此外,建议您最好将包含显示计划相关事件的显示计划文件或跟踪文件保存到使用 NTFS 文件系统的某个位置,并且只允许有权查看潜在敏感信息的用户对之进行访问。
支持适用于 Analysis Services 的 SQL Server Profiler 工作负载。
尝试从 SQL Server Profiler 连接到 Azure SQL 数据库时,它会错误地引发误导性错误消息:
In order to run a trace against SQL Server, you must be a member of **sysadmin** fixed server role or have the ALTER TRACE permission.
该消息应指出 SQL Server Profiler 不支持 Azure SQL 数据库。
用于回放跟踪的权限
重播跟踪还需要重播跟踪的用户具有 ALTER TRACE
权限。
但是,在重播期间,如果在重播的跟踪中遇到 Audit Login 事件,SQL Server Profiler 将使用该命令 EXECUTE AS
。 SQL Server Profiler 使用 EXECUTE AS
命令模拟与登录事件关联的用户。
如果 SQL Server Profiler 在重播的跟踪中遇到登录事件,将执行下列权限检查:
具有
User1
权限的ALTER TRACE
开始重播跟踪。在重播的跟踪中遇到了
User2
的登录事件。SQL Server Profiler 使用
EXECUTE AS
命令模拟User2
。SQL Server 尝试进行身份验证
User2
,并根据结果,会发生以下情况之一:如果
User2
无法进行身份验证,SQL Server Profiler 将返回错误,并继续根据User1
重播跟踪。如果
User2
已成功进行身份验证,User2
将继续重播跟踪。
检查
User2
目标数据库的权限,并根据结果,会发生以下情况之一:如果
User2
对目标数据库具有权限,则模拟已成功,并将跟踪重播为User2
。如果
User2
没有目标数据库的权限,服务器将检查该数据库上的Guest
用户。
Guest
在目标数据库上检查是否存在用户,并根据结果,会发生以下情况之一:如果
Guest
帐户存在,则跟踪记录将作为Guest
帐户重播。如果目标数据库上不存在
Guest
帐户,则返回错误,并将跟踪重播为User1
。
以下关系图说明了重播跟踪时此检查权限的过程: