dta 公用程式

dta 公用程式是 Database Engine Tuning Advisor 的命令提示字元版本。 dta 公用程式的設計,旨在為了讓您在應用程式和指令碼中使用 Database Engine Tuning Advisor 功能。

如同 Database Engine Tuning Advisor 一樣,dta 公用程式也會分析工作負載,以及提供實體設計結構方面的建議,增進該工作負載的伺服器效能。 工作負載可能是計畫快取、SQL Server Profiler 追蹤檔或資料表,也可能是 Transact-SQL 指令碼。 實體設計結構包括索引、索引檢視表及資料分割。 分析工作負載之後,dta 公用程式會產生資料庫實體設計的建議,且能夠產生必要的指令碼來實作建議。 您可以在命令提示字元處,利用 -if-it 引數,指定工作負載。 您也可以在命令提示字元處,利用 -ix 引數指定 XML 輸入檔。 在這個情況之下,工作負載指定在 XML 輸入檔中。

語法

dta
[ -? ] |
[
      [ -S server_name[ \instance ] ]
      { { -U login_id [-P password ] } | –E  }
      { -D database_name [ ,...n ] }
      [ -d database_name ] 
      [ -Tl table_list | -Tf table_list_file ]
      { -if workload_file | -it workload_trace_table_name  | 
        -ip | -ipf }
      { -ssession_name | -IDsession_ID }
      [ -F ]
      [ -of output_script_file_name ]
      [ -or output_xml_report_file_name ]
      [ -ox output_XML_file_name ]
      [ -rl analysis_report_list [ ,...n ] ]
      [ -ix input_XML_file_name ]
      [ -A time_for_tuning_in_minutes ]
      [ -n number_of_events ]
      [ -m minimum_improvement ]
      [ -fa physical_design_structures_to_add ]
      [ -fi ]
      [ -fp partitioning_strategy ]
      [ -fk keep_existing_option ]
      [ -fx drop_only_mode ]
      [ -B storage_size ]
      [ -c max_key_columns_in_index ]
      [ -C max_columns_in_index ]
      [ -e | -e tuning_log_name ]
      [ -N online_option]
      [ -q ]
      [ -u ]
      [ -x ]
      [ -a ]
]

引數

  • -?
    顯示使用方式的資訊。

  • -A time_for_tuning_in_minutes
    指定微調時間限制 (以分鐘為單位)。 dta 會利用指定的時間量來微調工作負載,以及產生含有建議的實體設計變更的指令碼。 依預設,dta 假設微調時間是 8 小時。 指定 0代表微調時間無限制。 dta 可能會在時間限制過期之前,完成整個工作負載的微調。 不過,為了確保整個工作負載都能得到微調,我們建議您指定無限的微調時間 (-A 0)。

  • -a
    不發出提示,直接微調工作負載並套用建議的內容。

  • -B storage_size
    指定建議的索引和資料分割所能使用的最大空間 (以 MB 為單位)。 微調多個資料庫時,所有資料庫的建議內容都考量了空間的計算。 依預設,dta 會採用下列較小的儲存體大小:

    • 目前的原始資料大小的三倍,其中包括資料庫中各資料表的堆積和叢集索引的總大小。

    • 所有相連硬碟的可用空間,加上原始資料大小。

    預設儲存體大小不包括非叢集索引和索引檢視表。

  • -C max_columns_in_index
    指定 dta 所提出之索引內的資料行數目上限。 最大值是 1024。 依預設,引數設定為 16。

  • -c max_key_columns_in_index
    指定 dta 所提出之索引內索引鍵資料行數目上限。 預設值是 16,這是允許的最大值。 dta 也會考慮使用內含資料行建立索引。 內含資料行的索引建議可能超出這個引數所指定的資料行數目。

  • -D database_name
    指定要微調的每個資料庫的名稱。 第一個資料庫是預設資料庫。 您可以指定多個資料庫,以逗號分隔各個資料庫名稱,例如:

    dta –D database_name1, database_name2...
    

    另外,您也可以在各個資料庫名稱上使用 –D 引數以指定多個資料庫,例如:

    dta –D database_name1 -D database_name2... n
    

    必須有 -D 引數。 如果未指定 -d 引數,dta 一開始會連接到工作負載中,第一個 USE database_name 子句所指定的資料庫。 如果工作負載中沒有明確的 USE database_name 子句,您就必須使用 -d 引數。

    例如,如果您的工作負載沒有包含任何明確的 USE database_name 子句,而且您使用下列 dta 命令,就不會產生任何建議:

    dta -D db_name1, db_name2...
    

    但是,如果您使用相同的工作負載,而且使用下列用到 -d 引數的 dta 命令,就會產生建議:

    dta -D db_name1, db_name2 -d db_name1
    
  • -d database_name
    指定微調工作負載時,dta 所連接的第一個資料庫。 這個引數只能指定一個資料庫。 例如:

    dta -d AdventureWorks2012 ...
    

    如果指定了多個資料庫名稱,dta 就會傳回錯誤。 -d 引數是選擇性的。

    如果使用 XML 輸入檔,您可以利用位於 TuningOptions 元素下的 DatabaseToConnect 元素,指定 dta 所要連接的第一個資料庫。 如需詳細資訊,請參閱<Database Engine Tuning Advisor>。

    如果您只微調一個資料庫,-d 引數會提供類似 sqlcmd 公用程式中 -d 引數的功能,但它不會執行 USE database_name 陳述式。 如需詳細資訊,請參閱<sqlcmd 公用程式>。

  • -E
    使用信任連接,不要求密碼。 必須使用指定登入識別碼的 -E 引數或 -U 引數。

  • -e tuning_log_name
    指定 dta 用來記錄它無法微調的事件之資料表或檔案的名稱。 資料表會建立在執行微調的伺服器中。

    如果使用某份資料表,請依照下列格式指定其名稱:[database_name].[owner_name].table_name。 下表顯示各個參數的預設值:

    參數

    預設值

    database_name

    指定了 –D 選項的 database_name

    owner_name

    dbo

    [!附註]

    owner_name 必須是 dbo。 如果指定了任何其他值,dta 的執行便會失敗,且會傳回錯誤。

    table_name

    如果使用檔案,請指定 .xml 副檔名。 例如,TuningLog.xml。

    [!附註]

    如果工作階段遭到刪除,dta 公用程式不會刪除使用者指定的微調記錄資料表之內容。 在微調超大型工作負載時,我們建議您對微調記錄指定資料表。 由於微調大型工作負載會產生大量微調記錄,因此,在使用資料表時可以更快刪除工作階段。

  • -F
    允許 dta 覆寫現有的輸出檔。 如果已存在相同名稱的輸出檔,且未指定 -F,則 dta會傳回錯誤。 您可以使用 -F 搭配 -of-or-ox

  • -fa physical_design_structures_to_add
    指定 dta 應該包含在建議內容中的實體設計結構類型。 下表列出並說明這個引數所能指定的值。 如果未指定任何值,dta 將使用預設的 -faIDX。

    說明

    IDX_IV

    索引和索引檢視表。

    IDX

    只有索引。

    IV

    只有索引檢視表。

    NCL_IDX

    只有非叢集索引。

  • -fi
    指定應為新建議考量篩選的索引。 如需詳細資訊,請參閱<建立篩選的索引>。

  • -fk keep_existing_option
    指定 dta 在產生建議時,必須保留的現有實體設計結構。 下表列出並說明這個引數所能指定的值:

<table>
<colgroup>
<col style="width: 50%" />
<col style="width: 50%" />
</colgroup>
<thead>
<tr class="header">
<th><p>值</p></th>
<th><p>說明</p></th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>NONE</p></td>
<td><p>無現有結構。</p></td>
</tr>
<tr class="even">
<td><p>ALL</p></td>
<td><p>所有現有結構。</p></td>
</tr>
<tr class="odd">
<td><p>ALIGNED</p></td>
<td><p>所有資料分割對齊結構。</p></td>
</tr>
<tr class="even">
<td><p>CL_IDX</p></td>
<td><p>資料表的所有叢集索引。</p></td>
</tr>
<tr class="odd">
<td><p>IDX</p></td>
<td><p>資料表的所有叢集和非叢集索引。</p></td>
</tr>
</tbody>
</table>
  • -fp partitioning_strategy
    指定是否應該分割 dta 所提出的新實體設計結構 (索引和索引檢視表) 及其分割方式。 下表列出並說明這個引數所能指定的值:

    說明

    NONE

    沒有資料分割。

    FULL

    完整的資料分割 (選擇這個項目,可以增進效能)。

    ALIGNED

    只有對齊的資料分割 (選擇這個項目,管理會更容易)。

    ALIGNED 表示在 dta 所產生的建議中,每個建議的索引都完全依照索引定義基礎資料表的相同方式進行分割。 索引檢視表中的非叢集索引會對齊索引檢視表。 這個引數只能指定一個值。 預設為 -fpNONE。

  • -fx drop_only_mode
    指定 dta 只考慮卸除現有的實體設計結構。 不考慮任何新的實體設計結構。 指定此選項時,dta 會評估現有實體設計結構的可用程度,並會建議您卸除不常使用的結構。 這個引數沒有任何值。 它不能搭配 -fa-fp-fk ALL 等引數一起使用。

  • -ID session_ID
    指定微調工作階段的數值識別碼。 若未指定,dta 會產生一個識別碼。 您可以利用這個識別碼來檢視現有微調工作階段的資訊。 如果您沒有指定 -ID 值,就必須利用 -s 來指定工作階段名稱。

  • -ip
    指定計畫快取可用做為工作負載。 針對明確選定的資料庫排名前 1000 個計畫快取事件,進行分析。 您可以利用 –n 選項變更此值。

  • -ipf
    指定計畫快取可用做為工作負載。 針對所有資料庫排名前 1000 個計畫快取事件,進行分析。 您可以利用 –n 選項變更此值。

  • -if workload_file
    指定微調輸入所用的工作負載檔案之路徑與名稱。 檔案必須是下列格式之一:.trc (SQL Server Profiler 追蹤檔)、.sql (SQL 檔) 或 .log (SQL Server 追蹤檔)。 您必須指定一個工作負載檔案或一份工作負載資料表。

  • -it workload_trace_table_name
    指定包含微調工作負載追蹤的資料表名稱。 此名稱會使用以下格式指定:[database_name].[owner_name]**.**table_name。

    下表顯示各項目的預設值:

    參數

    預設值

    database_name

    使用 database_name 時指定 –D 選項。

    owner_name

    dbo

    table_name

    無。

    [!附註]

    owner_name 必須是 dbo。 如果指定了任何其他值,dta 的執行便會失敗,且會傳回錯誤。 另外,也請注意,您必須指定一份工作負載資料表,或指定一個工作負載檔案。

  • -ix input_XML_file_name
    指定包含 dta 輸入資訊的 XML 檔案名稱。 這必須是符合 DTASchema.xsd 的有效 XML 文件。 微調選項的命令提示字元所指定的衝突引數會覆寫這個 XML 檔案中的對應值。 XML 輸入檔中以評估模式輸入的使用者指定組態是唯一例外。 例如,如果在 XML 輸入檔的 Configuration 元素中輸入了某項組態,EvaluateConfiguration 元素也指定成一個微調選項,XML 輸入檔所指定的微調選項會覆寫在命令提示字元之下輸入的任何微調選項。

  • -m minimum_improvement
    指定建議的組態必須符合之最小改進百分比。

  • -N online_option
    指定是否在線上建立實體設計結構。 下表列出和描述這個引數所能指定的值:

    說明

    OFF

    不能在線上建立任何建議的實體設計結構。

    ON

    可以在線上建立所有建議的實體設計結構。

    MIXED

    Database Engine Tuning Advisor 嘗試建議在可能的情況下,能夠在線上建立的實體設計結構。

    如果在線上建立索引,就會在它的物件定義上附加 ONLINE = ON。

  • -n number_of_events
    指定在工作負載中 dta 應微調的事件數目。 如果指定了此引數,且工作負載是包含持續時間資訊的追蹤檔,dta 就會依持續時間的遞減順序,微調事件。 這個引數可用來比較實體設計結構的兩個組態。 若要比較兩個組態,請依照下列方式,先指定相同的微調事件數目給這兩個組態,之後,兩個組態都指定無限的微調時間:

    dta -n number_of_events -A 0
    

    在這個情況下,指定無限微調時間 (-A 0) 非常重要。 否則,Database Engine Tuning Advisor 會預設 8 小時的微調時間。

  • -of output_script_file_name
    指定 dta 將建議以 Transact-SQL 指令碼的形式,寫入所指定的檔案名稱與目的地。

    使用此選項時可指定 -F。 請確定檔案名稱沒有重複,特別是當您也正在使用 -or-ox 時。

  • -or output_xml_report_file_name
    指定 dta 將建議以 XML 的格式寫入輸出報表中。 如果提供了檔案名稱,建議便會寫入該目的地。 否則,dta 將會使用該工作階段名稱以產生檔案名稱,並將其寫入目前的目錄。

使用此選項時可指定 **-F**。 請確定檔案名稱沒有重複,特別是當您也正在使用 **-of** 和 **-ox** 時。
  • -ox output_XML_file_name
    指定 dta 將建議以 XML 檔案的格式寫入所提供之檔案名稱與目的地。 請確定 Database Engine Tuning Advisor 有寫入目的地目錄的權限。

    使用此選項時可指定 -F。 請確定檔案名稱沒有重複,特別是當您也正在使用 -of-or 時。

  • -P password
    指定登入識別碼的密碼。 若未使用此選項,dta 將會提示您輸入密碼。

  • -q
    設定無訊息模式。 不會將任何資訊寫入主控台中,進度和標頭資訊都包括在內。

  • -rl analysis_report_list
    指定要產生的分析報表清單。 下表列出這個引數所能指定的值:

    報表

    ALL

    所有分析報表

    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

    資料行存取報表

    請用逗號分隔各值以指定多份報表,例如:

    ... -rl EVT_FREQ, VIW_TAB, WKLD_ANL ...
    
  • -S server_name[ \instance]
    指定電腦名稱及要連接的 SQL Server 執行個體。 若未指定 server_name,dta 會連接至本機電腦上的預設 SQL Server 執行個體。 連接至具名的執行個體或透過網路從遠端電腦執行 dta 時,必須使用此選項。

  • -s session_name
    指定微調工作階段的名稱。 若未指定 -ID,則必須進行此步驟。

  • -Tf table_list_file
    指定包含要微調的資料表清單之檔案名稱。 檔案中所列出的每份資料表,都應該從新的一行中開始。 資料表名稱應該採用三部分命名,例如 AdventureWorks2012.HumanResources.Department。 另外,如果您要叫用資料表調整功能,現有資料表的名稱後面可以接著一個指示預計資料表列數的數字。 當微調或評估工作負載中參考這些資料表的陳述式時,Database Engine Tuning Advisor 會考量預計的列數。 請注意,number_of_rows 計數和 table_name 之間可能有一或多個空格。

    這是 table_list_file 的檔案格式:

    database_name.[schema_name].table_name[number_of_rows]

    database_name.[schema_name].table_name[number_of_rows]

    database_name.[schema_name].table_name[number_of_rows]

    這個引數是在命令提示字元處輸入資料表清單的另一種方法 (-Tl)。 如果您使用 -Tl,請勿使用資料表清單檔案 (-Tf)。 如果同時使用這兩個引數,dta 會失敗,且會傳回錯誤。

    如果省略了 -Tf-Tl 引數,會將指定之資料庫中的所有使用者資料表都視做要進行微調。

  • -Tl table_list
    在命令提示字元之下,指定要微調的資料表清單。 請在資料表名稱之間加上逗號,將它們分開。 如果用 -D 引數只指定了一個資料庫,就不需要使用資料庫名稱限定資料表的名稱。 否則,每份資料表都需要完整的名稱,格式如下:database_name.schema_name.table_name。

    這個引數是使用資料表清單檔案 (-Tf) 的另一種方法。 如果同時使用了 -Tl-Tf,則 dta 會失敗,且會傳回錯誤。

  • -U login_id
    指定用來連接至 SQL Server 的登入識別碼。

  • -u
    啟動 Database Engine Tuning Advisor GUI。 所有參數都會視做為使用者介面的初始設定。

  • -x
    啟動微調工作階段並結束。

備註

按一下 CTRL+C 可停止微調工作階段,並依據截至目前為止 dta 所完成的分析,產生建議。 系統會提示您決定是否要產生建議。 請再按一下 CTRL+C 來停止微調工作階段,不產生建議。

範例

A. 微調建議中包含索引和索引檢視表的工作負載

這個範例利用安全連接 (-E) 來連接 MyServer 中的 tpcd1G 資料庫,以分析工作負載和建立各項建議。 它會將輸出寫入名為 script.sql 的指令碼檔案。 如果 script.sql 已經存在,因為已經指定了 -F 引數,所以 dta 會覆寫該檔案。 微調工作階段的執行時間沒有限制,以便確保能夠完整分析工作負載 (-A 0)。 建議至少必須能夠增進 5% (-m 5)。 dta 的最終建議應該包含索引與索引檢視表 (-fa IDX_IV)。

dta –S MyServer –E -D tpcd1G -if tpcd_22.sql -F –of script.sql –A 0 -m 5 -fa IDX_IV

B. 限制磁碟空間的使用

這個範例將資料庫大小總計限制成 3 GB (-B 3000),其中包括原始資料和其他索引,且會將輸出導向 d:\result_dir\script1.sql。 它的執行時間不超出 1 小時 (-A 60)。

dta –D tpcd1G –if tpcd_22.sql -B 3000 –of "d:\result_dir\script1.sql" –A 60

C. 限制微調查詢的數目

這個範例會將從 orders_wkld.sql 檔讀取的查詢數目限制為最大值 10 (-n 10),或執行 15 分鐘 (-A 15),兩者中先出現者優先。 若要確定 10 項查詢全都得到微調,請利用 -A 0 來指定無限微調時間。 如果時間很重要,請依照這個範例所顯示,利用 -A 引數指定微調所能使用的分鐘數來指定適當的時間限制。

dta –D orders –if orders_wkld.sql –of script.sql –A 15 -n 10

D. 微調檔案中所列出的特定資料表

此範例示範 table_list_file (-Tf 引數) 的用法。 table_list.txt 檔的內容如下:

AdventureWorks2012.Sales.Customer  100000
AdventureWorks2012.Sales.Store
AdventureWorks2012.Production.Product  2000000

table_list.txt 的內容指定:

  • 只應微調資料庫中的 CustomerStoreProduct 等資料表。

  • CustomerProduct 資料表中的列數,分別假設為 100,000 和 2,000,000。

  • Store 中的列數假設為資料表目前的列數。

請注意,資料列計數和 table_list_file 的先前資料表名稱之間可能有一個或多個空格。

微調時間是 2 小時 (-A 120),輸出寫在 XML 檔 (-ox XMLTune.xml) 中。

dta –D pubs –if pubs_wkld.sql –ox XMLTune.xml –A 120 –Tf table_list.txt

請參閱

概念

命令提示字元公用程式參考 (資料庫引擎)

Database Engine Tuning Advisor