错误和消息
工作负荷中无法优化的事件会产生错误和消息。这些错误和消息将被写入优化日志中,但不会停止优化会话。错误和消息将报告有关优化会话的状态信息,这些状态信息可以向用户提供有用的信息,帮助用户更好地了解优化过程。用户可以使用这些信息,根据上一个优化会话的反馈调整其输入参数。这些调整有助于更有效地使用数据库引擎优化顾问。
如果在优化数据库的过程中使用了大量工作负荷,这样的反馈就尤其有用。例如,如果出现下列情况之一,就会在优化日志中写入一条错误或消息:
数据库中不再存在工作负荷所创建的临时表。
查询中引用的表未选择进行优化。
无法分析事件。
优化日志项
使用 dta 命令提示实用工具时,通过指定 –e 参数值可以使数据库引擎优化顾问将错误和消息写入优化日志。也可以选中数据库引擎优化顾问图形用户界面 (GUI) 的**“常规”选项卡上的“保存优化日志”**。有关使用这两种数据库引擎优化顾问用户界面的详细信息,请参阅如何优化数据库 和 dta 实用工具。
如果没有为 dta 实用工具的 -e 参数指定文件或表名,则可以使用 GUI 来查看优化日志信息。若要用 GUI 查看优化日志,请在优化会话过程中或其结束后,单击**“进度”**选项卡。有关详细信息,请参阅如何查看优化输出。
GUI 中的优化日志包含下表中列出的列。
优化日志列
列名 |
说明 |
---|---|
CategoryID |
将记录映射到定义的标识符 (ID)。每个错误实例分配一个 ID。此 ID 为一个字符加三位数字的格式。前缀字符允许您在优化日志表中搜索与语句级错误、约束级错误或服务器级错误相关的项。前缀字符将记录分类为:
|
Event |
事件字符串(如果适用)。某些消息与事件无关,在这种情况下,此列可为空。事件字符串与储存过程的名称、批等对应。 |
Statement |
数据库引擎优化顾问对事件进行分析并优化与事件相关的语句。此列捕获与返回给用户的消息相关的语句(如果适用)。如果消息与语句无关,此列也可为空。此外,如果服务器无法分析事件,则此列为空。 |
Frequency |
此记录的出现次数。默认值为 1。 |
Reason |
无法优化语句或事件的原因。此消息可以由服务器、ODBC 或数据库引擎优化顾问生成。 |
下表列出了与上表 CategoryID 列的说明中列出的类别相关的消息。
与语句或工作负荷相关的错误
类别 ID |
优化日志消息 |
---|---|
S001 |
语句未引用任何表。 |
S002 |
语句引用了未选定要优化的表。 |
S003 |
语句仅引用小表。 |
S004 |
语句引用了索引提示,或者语句包含 NOEXPAND 查询提示。 |
S005 |
将采用本地计算机的硬件特征。 使用测试服务器优化模式时返回此错误。扩展存储过程 xp_msver 返回了错误,因此数据库引擎优化顾问无法确定远程计算机的硬件特征。有关详细信息,请参阅减轻生产服务器优化负荷。 |
S006 |
将忽略附加磁盘上可用的存储空间。 出现错误,使得数据库引擎优化顾问无法收集有关附加磁盘上的可用存储空间的信息。在这种情况下,数据库引擎优化顾问假定可用存储大小为当前原始数据大小(包括数据库中表的堆和聚集索引的总大小)的三倍。 |
S0071 |
将事件 <string> 替换为 <string> 以进行优化。 |
S0082 |
事件未引用任何表。 |
S0092 |
事件引用了未选定要优化的对象。 |
1 数据库引擎优化顾问将 sp_cursoropen、sp_executesql、sp_prepare、sp_cursorprepare、sp_prepexec 和 sp_cursorprepexec 事件替换为这些事件中嵌入的 Transact-SQL 字符串,以便进行优化。错误消息 S007 在优化日志的 Reason 列中提供原事件和替换事件。
2 这些是事件级消息,因此优化日志的 Statement 列将为空。
与约束相关的错误
类别 ID |
优化日志消息 |
---|---|
C002 |
在输入配置中指定的索引视图没有任何键。但是,在处理该配置时将忽略这一点。 |
C003 或 C004 |
数据库引擎优化顾问将检测是设置了默认优化时间还是用户指定的优化时间来优化工作负荷,然后在优化日志中返回下列消息之一。(dta.exe 假设 8 小时,而 GUI 假设 1 小时) 如果使用默认时间,则返回的消息为: 并非工作负荷中的所有事件都已分析。dta.exe 假设默认时间为 8 小时。请考虑使用以下方法之一提供时间限制。(1) 如果使用的是图形用户界面,请在“优化选项”选项卡式页面中限制优化时间。(2) 如果使用的是 dta.exe,请指定 -A 参数的最大时间量。(3) 如果使用的是 XML 输入文件,请指定 TuningOptions 下 TuningTimeInMin 元素的最大时间量。 如果使用用户指定的时间,则返回的消息为: 并非工作负荷中的所有事件都已分析。请使用以下一种方法增大时间限制。(1) 如果使用的是图形用户界面,请在“优化选项”选项卡式页面中限制优化时间。(2) 如果使用的是 dta.exe,请指定 -A 参数的最大时间量。(3) 如果使用的是 XML 输入文件,请指定 TuningOptions 下 TuningTimeInMin 元素的最大时间量。 |
与服务器相关的错误
类别 ID |
优化日志消息 |
---|---|
E000 |
来自服务器的特定消息。不同情况下此消息可能会有所不同。 |
E001 |
来自测试服务器的特定消息。不同情况下此消息可能会有所不同。 |
E002 |
在测试服务器中,无法成功克隆数据库。 |