charleschen的麦地

——SomeDay I Will Be Back!
posts - 32, comments - 123, trackbacks - 20, articles - 0

回归命令行 SQLServer的命令行工具们(1) --dta.exe

 

    谨以此文送给以前的那些同事们,每每回想其在TARA上一起度过的ORACLE访问的日子,就会觉得现在的SQLServer那些花里胡哨的图形界面简直是在亵渎数据库分析师,而深负犯罪感。顺便赞下TOAD,强大的怪兽!

     之所以第一篇写dta,是因为虽然dta是功能最强大的工具之一,但是因为万恶的图形化界面程序导致dta可能是最不为人使用的一个废柴程序了.拿它开刀,就算写错了几乎都没人知道。^_^

     dta 实用工具可以分析工作负荷,并可为该工作负荷推荐可改进服务器性能的物理设计结构。工作负荷可以是 SQL Server Profiler 跟踪文件或跟踪表,也可以是 Transact-SQL 脚本。物理设计结构包括索引、索引视图和分区。分析了工作负荷后,dta 实用工具将生成数据库物理设计结构建议,并可生成实现该建议所需的脚本。可以在命令行提示符处,使用 -if -it 参数指定工作负荷。也可以在命令提示符处,使用 -ix 参数指定 XML 输入文件。在这种情况下,在 XML 输入文件中指定工作负荷。

 

   实际上dta提供了比图形化数据库引擎优化顾问更强的功能。通过命令 dta.exe /?可以获得dta的命令信息(如下):

DTA.EXE [-S ServerName[\Instance]] [-U LoginId] [-P 密码] [-E] [-d DatabaseName

] [-D DatabaseName[, DatabaseName]] [-Tl TableName[, TableName]] [-Tf TableListF

ileName] [-if WorkloadFileName] [-it WorkloadTableName] [-s SessionName] [-of [S

criptFileName]] [-or [ReportFileName]] [-rl 报告[, 报告]] [-ox [OutputXmlFileNam

e]] [-F] [-ID SessionID] [-ix InputXmlFileName] [-A TuningTime] [-n NumberOfEven

ts] [-m MinimumImprovement] [-fa PhysicalDesignStructure] [-fp PartitionStrategy

] [-fk PhysicalDesignStructure] [-fx] [-B StorageSize] [-c MaxKeyColumnsInIndex]

 [-C MaxColumnsInIndex] [-e TuningLogTable] [-N OnlineOption] [-q] [-u] [-x] [-a

] [-?]

 

参数列表

-S ServerName[\Instance]        要连接的 SQL Server 实例的名称。此为将进行所有优

化分析和支持表更新的服务器。

 

-U LoginId                      在建立与 SQL Server 的连接时使用的登录 ID (通过

-S 选项指定)

 

-P 密码                         指定的登录 ID 的密码。

 

-E                              使用可信连接连接到服务器。

 

-d DatabaseName                 优化时要连接的数据库。

 

-D DatabaseName                 要优化的数据库名称列表。用逗号分隔名称。

 

-Tl TableName                   应进行优化的表名的列表。用逗号分隔名称。如果通过

 -D

                                选项只指定了一个数据库,则不需要使用数据库名称来

限定表名。否则,每个表都需要使用

                                [数据库].[架构].[] 格式的完全限定名称。

 

-Tf TableListFileName          包含要优化的表列表的文件名。该文件中列出的表必须

位于单独的行中,并且名称必须使用数据库名称和架

                                构名称(可选)进行限定。可通过在表名后面加一个数字

来调用可选的表缩放功能,此数字指示该表中提取

                                的行数,例如,"[myDatabase].[dbo].[myTable] 500"

 

-if WorkloadFileName            要用作优化输入的工作负荷文件的路径和文件名。接受

的格式:

                                *.trc - SQL Server Profiler 跟踪文件;

                                *.xml - SQL 事件探查器 XML 跟踪文件;

                                *.sql - SQL Server 脚本。

 

-it WorkloadTableName           包含要优化的工作负荷跟踪的表名。该名称以 [数据库

].[架构].[] 格式指定。

 

-s SessionName                  新优化会话的名称。

 

-of ScriptFileName              指示应将 Transact-SQL

                                脚本和建议写入文件。如果提供了文件名,则将建议写

入该目标,否则,将根据会话名称生成文件名。

 

-or ReportFileName              指示应将报告写入文件。如果提供了文件名,则将报告

写入该目标,否则,将根据会话名称生成文件名。

 

-rl 报告                                指定要生成的分析报告列表

                                (选择一个或多个):

                                ALL             - 生成所有报告

                                NONE            - 不生成任何报告

                                STMT_COST       - 语句开销报告

                                EVT_FREQ        - 事件频率报告

                                STMT_DET        - 语句详细报告

                                CUR_STMT_IDX    - 语句-索引关系报告(当前)

                                REC_STMT_IDX    - 语句-索引关系报告(建议)

                                STMT_COSTRANGE - 语句开销范围报告

                                CUR_IDX_USAGE   - 索引使用情况报告(当前)

                                REC_IDX_USAGE   - 索引使用情况报告(建议)

                                CUR_IDX_DET     - 索引详细报告(当前)

                                REC_IDX_DET     - 索引详细报告(建议)

                                VIW_TAB         - 视图-表关系报告

                                WKLD_ANL        - 工作负荷分析报告

                                DB_ACCESS       - 数据库访问报告

                                TAB_ACCESS      - 表访问报告

                                COL_ACCESS      - 列访问报告

                                默认情况下,生成所有报告。

 

-ox OutputXmlFileName           应用程序将输出信息写入到的 XML 文件的名称。

 

-F                              允许数据库引擎优化顾问覆盖现有输出文件(使用任何

o? 选项指定)

 

-ID SessionID                   数据库引擎优化顾问应为其生成结果的会话 ID

 

-ix InputXmlFileName            指定用户配置(用户指定的配置) XML 文件名。注意:

 

                                如果文件中出现重复的参数,则命令行选项优先。

 

-A TuningTime                   数据库引擎优化顾问将在优化上花费的最长时间(分钟)

。通常,时间越长,建议的质量越高。如果将值指

                                定为 0,则对优化时间没有限制。如果未指定值,则将

优化时间限制为 8 小时。

 

-n NumberOfEvents               要优化的事件数。

 

-m MinimumImprovement           指定数据库引擎优化顾问只应在估计的性能提高程度达

到或超过提供的值(百分比)时提供建议。如果未指

                                定值,则无论性能提高的幅度有多大都提供建议。

 

-fa PhysicalDesignStructure     指定数据库引擎优化顾问应考虑为其提供新建议的物理

设计结构。

                                可用选项(选择一项):

                                IDX_IV - 聚集索引和非聚集索引以及索引视图

                                IDX     - 聚集索引和非聚集索引

                                IV      - 索引视图

                                NCL_IDX - 非聚集索引

                                如果未指定任何选项,则使用 IDX

 

-fp PartitionStrategy           指定数据库引擎优化顾问应考虑请求添加的分区支持。

 

                                可用选项(选择一项):

                                NONE    - 不考虑任何分区策略

                                FULL    - 完全分区(最佳性能)

                                ALIGNED - 对齐分区(最佳可管理性)

                                如果未指定任何选项,则使用 NONE

 

-fk PhysicalDesignStructure     指定数据库引擎优化顾问不能从现有数据库架构中删除

的物理设计结构。

                                可用选项(选择一项):

                                ALL     - 保留现有的所有物理设计结构

                                NONE    - 不保留现有的任何物理设计结构

                                CL_IDX - 保留聚集索引

                                IDX     - 保留聚集索引和非聚集索引

                                ALIGNED - 保留对齐分区

                                如果未指定任何选项,则使用 ALL

 

-fx                             指定数据库引擎优化顾问将评估现有物理设计结构的用

途,并按照建议删除使用率低的结构。此选项不能与

                                 -fa -fp 选项一起使用。

 

-B StorageSize                  全部建议可以占用的最大空间(MB)

 

-c MaxKeyColumnsInIndex         索引中应用程序建议的最大键列数。

 

-C MaxColumnsInIndex            索引中应用程序建议的最大列数。

 

-e TuningLogTable               数据库引擎优化顾问将优化过程中出现的日志消息写入

到的表或文件的名称。应该以

                                [数据库].[架构].[] 格式提供表名。将在进行优化

的服务器上创建该表。文件名必须使用

          &nbs