如何创建工作负荷

工作负荷是对要优化的一个或多个数据库执行的一组 Transact-SQL 语句。数据库引擎优化顾问图形用户界面 (GUI) 和 dta 命令行实用工具在优化数据库时使用跟踪文件、跟踪表、或 Transact-SQL 脚本作为工作负荷输入。工作负荷也可以嵌入到 XML 输入文件,在此文件中您也可以为每一事件指定一个权重。有关指定内联工作负荷的详细信息,请参阅使用 XML 输入文件进行优化

可以使用 Microsoft SQL Server Management Studio 中的查询编辑器或您最喜欢的文本编辑器来创建 Transact-SQL 脚本工作负荷。若要创建跟踪文件或跟踪表工作负荷,请使用 SQL Server Profiler。数据库引擎优化顾问将分析这些工作负荷以便建议要使用的索引或分区策略来改善服务器的查询性能。

注意注意

使用跟踪表作为工作负荷时,该表必须位于数据库引擎优化顾问正在优化的那台服务器上。如果您创建的跟踪表位于其他服务器上,请将其移到数据库引擎优化顾问正在优化的服务器上。

使用 SQL Server Management Studio 查询编辑器创建 Transact-SQL 脚本工作负荷

  1. 在 SQL Server Management Studio 中启动查询编辑器。有关如何执行本步骤的信息,请参阅在 SQL Server Management Studio 中编辑脚本和文件

  2. 在查询编辑器中键入您的 Transact-SQL 脚本。此脚本应包含一组对想要优化的数据库执行的 Transact-SQL 语句。使用 .sql 扩展名保存文件。数据库引擎优化顾问 GUI 和命令行实用工具可以将此 Transact-SQL 脚本用作工作负荷。

使用 SQL Server Profiler 创建跟踪文件和跟踪表工作负荷

  1. 使用下列方法之一启动 SQL Server Profiler:

    • 在**“开始”菜单中,依次指向“所有程序”Microsoft SQL Server“性能工具”**,然后单击 SQL Server Profiler

    • 在 SQL Server Management Studio 中,单击**“工具”菜单,然后单击“SQL Server Profiler”**。

  2. 按照下面介绍的步骤,使用 SQL Server Profiler优化模板来创建跟踪文件或表:

建议使用 SQL Server Profiler 优化模板来为数据库引擎优化顾问捕获工作负荷。

如果要使用自己的模板,请确保为您所使用的 SQL Server 版本捕获了以下跟踪事件。

SQL Server 2005 及更高版本:

  • RPC:Completed

  • SQL:BatchCompleted

  • SP:StmtCompleted

SQL Server 2000:

  • RPC:Completed

  • SQL:BatchCompleted

也可以使用这些跟踪事件的 Starting 版本。例如,SQL:BatchStarting。但是,这些跟踪事件的 Completed 版本包括 Duration 列,它能使数据库引擎优化顾问更有效地优化工作负荷。数据库引擎优化顾问不优化其他类型的跟踪事件。有关这些跟踪事件的详细信息,请参阅Stored Procedures 事件类别TSQL 事件类别。有关使用 SQL 跟踪存储过程来创建跟踪文件工作负荷的信息,请参阅如何创建跟踪 (Transact-SQL)

包含 LoginName 数据列的跟踪文件或跟踪表工作负荷

数据库引擎优化顾问在优化过程中提交显示计划请求。当包含 LoginName 数据列的跟踪表或跟踪文件被用作工作负荷时,数据库引擎优化顾问将模拟 LoginName 中指定的用户。如果没有为此用户授予 SHOWPLAN 权限(该权限使用户能够为跟踪中包含的语句执行和生成显示计划),数据库引擎优化顾问将不会优化这些语句。有关 LoginName 数据列的详细信息,请参阅用数据列描述事件。有关 SHOWPLAN 权限的详细信息,请参阅显示计划安全性

避免为跟踪的 LoginName 列中指定的每个用户授予 SHOWPLAN 权限

  1. 优化跟踪文件或跟踪表工作负荷。有关详细信息,请参阅如何优化数据库

  2. 在优化日志中查看由于权限不足而没有优化的语句。有关详细信息,请参阅关于优化日志如何查看优化输出

  3. 通过从未优化的事件中删除 LoginName 列来创建新的工作负荷,然后只将未优化的事件保存到新的跟踪文件或跟踪表中。有关从跟踪中删除数据列的详细信息,请参阅如何为跟踪文件指定事件 (SQL Server Profiler)如何修改现有跟踪 (Transact-SQL)

  4. 将不带 LoginName 列的新工作负荷重新提交到数据库引擎优化顾问。

数据库引擎优化顾问将优化新的工作负荷,因为跟踪中未指定登录信息。如果某个语句没有相应的 LoginName,数据库引擎优化顾问将通过模拟启动优化会话的用户(sysadmin 固定服务器角色或 db_owner 固定数据库角色的成员)来优化该语句。