Utilità dta

L'utilità dta è la versione per il prompt dei comandi dello strumento Ottimizzazione guidata motore di database. L'utilità dta è stata sviluppata per consentire l'utilizzo della funzionalità Ottimizzazione guidata motore di database in applicazioni e script.

In modo analogo a Ottimizzazione guidata motore di database, l'utilità dta analizza il carico di lavoro e propone strutture di progettazione fisica per ottimizzare le prestazioni a livello di server per il carico di lavoro specifico. Il carico di lavoro può essere un file o una tabella di traccia di SQL Server Profiler oppure uno script Transact-SQL. Le strutture di progettazione fisica includono indici, viste indicizzate e schemi di partizionamenti. Dopo aver analizzato un carico di lavoro, l'utilità dta visualizza un'indicazione di progettazione fisica dei database e quindi genera lo script necessario per implementare tale indicazione. I carichi di lavoro possono essere specificati dal prompt dei comandi con l'argomento -if o -it. È inoltre possibile specificare un file di input XML dal prompt dei comandi con l'argomento -ix. In quest'ultimo caso, il carico di lavoro viene specificato nel file di input XML.

Sintassi


            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 }
              { -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 ]
     ]

Argomenti

  • -?
    Visualizza le informazioni sull'utilizzo.

  • -Atime_for_tuning_in_minutes
    Specifica il limite del tempo di ottimizzazione espresso in minuti. dta utilizza l'intervallo di tempo specificato per ottimizzare il carico di lavoro e generare uno script in base alle indicazioni relative alla modifica della progettazione fisica. Per impostazione predefinita, l'utilità dta utilizza un tempo di ottimizzazione pari a 8 ore. Se si specifica 0, viene impostato un tempo di ottimizzazione illimitato. È possibile che l'utilità dta concluda l'ottimizzazione dell'intero carico di lavoro prima che sia trascorso il limite di tempo specificato. Per garantire l'ottimizzazione dell'intero carico di lavoro, è tuttavia consigliabile specificare un tempo di ottimizzazione illimitato (-A 0).

  • -a
    Ottimizza il carico di lavoro e applica l'indicazione senza richiedere conferma all'utente.

  • -Bstorage_size
    Specifica lo spazio massimo, espresso in MB, che può essere utilizzato dall'indice e dal partizionamento consigliati. In caso di ottimizzazione di più database, per il calcolo dello spazio vengono considerate le indicazioni relative a tutti i database. Per impostazione predefinita, dta utilizza il valore più basso delle dimensioni dello spazio di archiviazione riportate di seguito:

    • Tre volte la dimensione corrente dei dati non elaborati, che include la dimensione totale degli heap e degli indici cluster nelle tabelle del database.

    • Lo spazio libero su tutte le unità disco collegate più la dimensione dei dati non elaborati.

    La dimensione predefinita dello spazio di archiviazione non include gli indici non cluster e le viste indicizzate.

  • -Cmax_columns_in_index
    Specifica il numero massimo di colonne negli indici proposto da dta. Il valore massimo dipende dalla versione di SQL Server. Il valore massimo per SQL Server 2000 è 16, mentre quello per SQL Server 2005 e SQL Server 2008 è 1024. Per impostazione predefinita, questo argomento è impostato su 16.

  • -cmax_key_columns_in_index
    Specifica il numero massimo di colonne chiave negli indici proposto da dta. Il valore predefinito è 16, ovvero il valore massimo consentito. Questo argomento è valido solo per SQL Server 2005 e SQL Server 2008. dta prende inoltre in considerazione la creazione di indici con colonne incluse. Gli indici con colonne incluse indicati dall'utilità potrebbero superare il numero di colonne specificato in questo argomento.

  • -Ddatabase_name
    Specifica il nome di ogni database da ottimizzare. Il primo database è il database predefinito. Per specificare più database, separare i relativi nomi con una virgola, ad esempio:

    dta –D database_name1, database_name2...
    

    In alternativa, è possibile specificare più database utilizzando l'argomento –D per ogni nome di database, ad esempio:

    dta –D database_name1 -D database_name2... n
    

    L'argomento -D è obbligatorio. Se si omette l'argomento -d, dta si connette inizialmente al database specificato nella prima clausola USE database_name del carico di lavoro. Se non è presente alcuna clausola USE database_name esplicita nel carico di lavoro, è necessario utilizzare l'argomento -d.

    Se, ad esempio, un carico di lavoro non include una clausola USE database_name esplicita e si utilizza il comando dta seguente, non verrà generata alcuna indicazione.

    dta -D db_name1, db_name2...
    

    Se invece si utilizza lo stesso carico di lavoro e si specifica il comando dta seguente con l'argomento -d, verrà generata un'indicazione.

    dta -D db_name1, db_name2 -d db_name1
    
  • -ddatabase_name
    Specifica il primo database al quale l'utilità dta si connette per l'ottimizzazione di un carico di lavoro. Per questo argomento è possibile specificare solo un database. Ad esempio:

    dta -d adventureworks2008R2 ...
    

    Se vengono specificati più nomi di database, dta restituisce un errore. L'argomento -d è facoltativo.

    Se si utilizza un file di input XML, è possibile specificare il primo database al quale l'utilità dta si connette mediante l'utilizzo dell'elemento DatabaseToConnect che si trova sotto l'elemento TuningOptions. Per ulteriori informazioni, vedere Guida di riferimento ai file di input XML (Ottimizzazione guidata motore di database).

    In caso di ottimizzazione di un solo database, l'argomento -d è caratterizzato da una funzionalità simile all'argomento -d dell'utilità sqlcmd, ma non esegue l'istruzione USE database_name. Per ulteriori informazioni, vedere Utilità sqlcmd.

  • -E
    Utilizza una connessione trusted anziché richiedere una password. È necessario utilizzare l'argomento -E o -U, che specifica un ID di accesso.

  • -etuning_log_name
    Specifica il nome della tabella o del file in cui dta registra gli eventi che non possono essere ottimizzati. La tabella viene creata nel server in cui viene eseguita l'ottimizzazione.

    Se si utilizza una tabella, specificare il relativo nome utilizzando il formato [database_name].[owner_name].table_name. Nella tabella seguente sono riportati i valori predefiniti per ogni parametro.

    Parametro

    Valore predefinito

    database_name

    database_name specificato con l'opzione –D

    owner_name

    dbo

    NotaNota
    Il parametro owner_name deve essere impostato su dbo. Se si specifica un qualsiasi altro valore, l'esecuzione di dta ha esito negativo e viene restituito un errore.

    table_name

    Nessuno

    Se si utilizza un file, specificare l'estensione xml. Ad esempio, TuningLog.xml.

    Nota

    L'utilità dta non elimina il contenuto delle tabelle del log di ottimizzazione specificate dall'utente se la sessione viene eliminata. Quando si esegue l'ottimizzazione di carichi di lavoro molto estesi, è consigliabile specificare una tabella per il log di ottimizzazione. Poiché l'ottimizzazione di carichi di lavoro estesi può generare log di ottimizzazione estesi, è possibile eliminare le sessioni molto più velocemente in caso di utilizzo di una tabella.

  • -F
    Consente a dta di sovrascrivere il file di output esistente. Se un file di output con lo stesso nome esiste già e si omette -F, dta restituisce un errore. È possibile utilizzare -F in combinazione con -of, -or oppure -ox.

  • -faphysical_design_structures_to_add
    Specifica i tipi di strutture di progettazione fisica che dta deve includere nell'indicazione. Nella tabella seguente sono riportati e descritti i valori che è possibile specificare per questo argomento. Se non si specifica alcun valore, dta utilizza l'argomento predefinito -faIDX.

    Valore

    Descrizione

    IDX_IV

    Indici e viste indicizzate Per informazioni su quali versioni di SQL Server non supportano questa opzione di ottimizzazione, vedere Opzioni di ottimizzazione non supportate.

    IDX

    Solo indici.

    IV

    Solo viste indicizzate Per informazioni su quali versioni di SQL Server non supportano questa opzione di ottimizzazione, vedere Opzioni di ottimizzazione non supportate.

    NCL_IDX

    Solo indici non cluster.

  • -fi
    Specifica gli indici filtrati da considerare per i nuovi requisiti. Per ulteriori informazioni, vedere Linee guida per la progettazione di indici filtrati.

  • -fkkeep_existing_option
    Specifica le strutture di progettazione fisica esistenti che dta deve conservare durante la generazione dell'indicazione corrispondente. Nella tabella seguente sono riportati e descritti i valori che è possibile specificare per questo argomento.

<div class="caption">

</div>

<div class="tableSection">

<table>
<colgroup>
<col style="width: 50%" />
<col style="width: 50%" />
</colgroup>
<thead>
<tr class="header">
<th><p>Valore</p></th>
<th><p>Descrizione</p></th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>NONE</p></td>
<td><p>Nessuna struttura esistente.</p></td>
</tr>
<tr class="even">
<td><p>ALL</p></td>
<td><p>Tutte le strutture esistenti.</p></td>
</tr>
<tr class="odd">
<td><p>ALIGNED</p></td>
<td><p>Tutte le strutture allineate alle partizioni.</p></td>
</tr>
<tr class="even">
<td><p>CL_IDX</p></td>
<td><p>Tutti gli indici cluster nelle tabelle.</p></td>
</tr>
<tr class="odd">
<td><p>IDX</p></td>
<td><p>Tutti gli indici cluster e non cluster nelle tabelle.</p></td>
</tr>
</tbody>
</table>

</div>
  • -fppartitioning_strategy
    Specifica se le nuove strutture di progettazione fisica (indici e viste indicizzate) proposte da dta devono essere partizionate e definisce la modalità di partizionamento. Nella tabella seguente sono riportati e descritti i valori che è possibile specificare per questo argomento.

    Valore

    Descrizione

    NONE

    Nessun partizionamento.

    FULL

    Partizionamento completo (scegliere questo valore per ottimizzare le prestazioni).

    ALIGNED

    Solo partizionamento allineato (scegliere questo valore per ottimizzare la gestione).

    Se si specifica ALIGNED, nell'indicazione generata da dta ogni indice proposto viene partizionato esattamente nello stesso modo della tabella sottostante per la quale è stato definito l'indice. Gli indici non cluster in una vista indicizzata sono allineati in base alla vista indicizzata. Per questo argomento è possibile specificare solo un valore. L'impostazione predefinita è -fpNONE.

  • -fxdrop_only_mode
    Specifica che dta prende in considerazione esclusivamente l'eliminazione delle strutture di progettazione fisica esistenti. Non verranno considerate le nuove strutture di progettazione fisica. Se si specifica questa opzione, dta valuta l'utilità delle strutture di progettazione fisica esistenti e propone di eliminare le strutture utilizzate meno di frequente. Questo argomento non utilizza alcun valore e non può essere utilizzato in combinazione con gli argomenti -fa, -fp o -fk ALL.

  • -IDsession_ID
    Specifica l'identificatore numerico per la sessione di ottimizzazione. Se omesso, dta genera un numero di identificazione. È possibile utilizzare questo identificatore per visualizzare le informazioni relative alle sessioni di ottimizzazione correnti. Se per -ID non si specifica alcun valore, è necessario specificare un nome di sessione utilizzando -s.

  • -ifworkload_file
    Specifica il percorso e il nome del file del carico di lavoro da utilizzare come input per l'ottimizzazione. Il file deve essere in formato trc (file di traccia di SQL Server Profiler), sql (file SQL) oppure log (file di traccia di SQL Server). È inoltre necessario specificare un file o una tabella del carico di lavoro.

  • -itworkload_trace_table_name
    Specifica il nome della tabella contenente la traccia del carico di lavoro per l'ottimizzazione. Il nome viene specificato nel formato: [database_name].[owner_name]**.**table_name.

    Nella tabella seguente sono riportati i valori predefiniti per ogni parametro.

    Parametro

    Valore predefinito

    database_name

    database_name specificato con l'opzione –D.

    owner_name

    dbo

    table_name

    Nessuno

    Nota

    Il parametro owner_name deve essere impostato su dbo. Se viene specificato un altro valore, l'esecuzione di dta ha esito negativo e viene restituito un errore. È inoltre necessario specificare una tabella o un file del carico di lavoro.

  • -ixinput_XML_file_name
    Specifica il nome del file XML contenente le informazioni di input di dta. Si deve trattare di un documento XML valido conforme a DTASchema.xsd. Gli argomenti in conflitto specificati nel prompt dei comandi per le opzioni di ottimizzazione hanno la priorità sul valore corrispondente incluso in questo file XML. L'unica eccezione è rappresentata dal caso in cui una configurazione definita dall'utente venga specificata in modalità di valutazione nel file di input XML. Se, ad esempio, si specifica una configurazione nell'elemento Configuration del file di input XML e si specifica anche l'elemento EvaluateConfiguration come una delle opzioni di ottimizzazione, le opzioni di ottimizzazione specificate nel file di input XML avranno la priorità su qualsiasi opzione di ottimizzazione specificata nel prompt dei comandi.

  • -mminimum_improvement
    Specifica la percentuale minima di miglioramento che la configurazione consigliata deve soddisfare.

  • -Nonline_option
    Specifica se le strutture di progettazione fisica vengono create online. Nella tabella seguente sono riportati e descritti i valori che è possibile specificare per questo argomento.

    Valore

    Descrizione

    OFF

    Le strutture di progettazione fisica indicate non possono essere create online.

    ON

    Tutte le strutture di progettazione fisica indicate possono essere create online.

    MIXED

    Ottimizzazione guidata motore di database indica le strutture di progettazione fisica che possono essere create online quando possibile.

    Se gli indici vengono creati online, ONLINE = ON viene aggiunto alla relativa definizione di oggetto.

  • -nnumber_of_events
    Specifica il numero di eventi nel carico di lavoro che dta deve ottimizzare. Se si specifica questo argomento e il carico di lavoro è un file di traccia contenente informazioni sulla durata, dta ottimizza gli eventi in base all'ordine decrescente di durata. Questo argomento risulta utile per confrontare due configurazioni di strutture di progettazione fisica. Per confrontare due configurazioni, per entrambe le configurazioni specificare lo stesso numero di eventi da ottimizzare e quindi un tempo di ottimizzazione illimitato nel modo illustrato di seguito:

    dta -n number_of_events -A 0
    

    In questo caso, è importante specificare un tempo di ottimizzazione illimitato (-A 0). In caso contrario, Ottimizzazione guidata motore di database utilizza il tempo di ottimizzazione predefinito pari a 8 ore.

  • -ofoutput_script_file_name
    Specifica che dta scrive l'indicazione sotto forma di script Transact-SQL nel nome file e nella destinazione specificati.

    È possibile utilizzare -F assieme a questa opzione. Assicurarsi che il nome file sia univoco, soprattutto se vengono specificate anche le opzioni -or e -ox.

  • -oroutput_xml_report_file_name
    Specifica che dta scrive l'indicazione in un report di output in formato XML. Se si specifica un nome di file, le indicazioni vengono scritte in tale destinazione. In caso contrario, dta utilizza il nome di sessione per generare il nome file e lo scrive nella directory corrente.

È possibile utilizzare **-F** assieme a questa opzione. Assicurarsi che il nome file sia univoco, soprattutto se vengono specificate anche le opzioni **-of** e **-ox**.
  • -oxoutput_XML_file_name
    Specifica che dta scrive l'indicazione sotto forma di file XML nel nome file e nella destinazione specificati. Assicurarsi che Ottimizzazione guidata motore di database disponga delle autorizzazioni di scrittura adeguate per la directory di destinazione.

    È possibile utilizzare -F assieme a questa opzione. Assicurarsi che il nome file sia univoco, soprattutto se vengono specificate anche le opzioni -of e -or.

  • -Ppassword
    Specifica la password per l'ID di accesso. Se si omette questa opzione, dta richiede una password.

  • -q
    Imposta la modalità non interattiva. Le informazioni, incluse quelle relative alle intestazioni e allo stato, non vengono scritte nella console.

  • -rlanalysis_report_list
    Specifica l'elenco dei report di analisi da generare. Nella tabella seguente sono riportati i valori che è possibile specificare per questo argomento.

    Valore

    Report

    ALL

    Tutti i report di analisi

    STMT_COST

    Report costo istruzioni

    EVT_FREQ

    Report frequenza eventi

    STMT_DET

    Report dettagli istruzioni

    CUR_STMT_IDX

    Report relazioni istruzioni-indici (configurazione corrente)

    REC_STMT_IDX

    Report relazioni istruzioni-indici (configurazione consigliata)

    STMT_COSTRANGE

    Report intervallo di costi istruzione

    CUR_IDX_USAGE

    Report utilizzo indici (configurazione corrente)

    REC_IDX_USAGE

    Report utilizzo indici (configurazione consigliata)

    CUR_IDX_DET

    Report dettagli indici (configurazione corrente)

    REC_IDX_DET

    Report dettagli indici (configurazione consigliata)

    VIW_TAB

    Report relazioni viste-tabelle

    WKLD_ANL

    Report analisi carico di lavoro

    DB_ACCESS

    Report accessi a database

    TAB_ACCESS

    Report accessi a tabelle

    COL_ACCESS

    Report accessi a colonne

    Per specificare più report, separare i valori utilizzando la virgola, ad esempio:

    ... -rl EVT_FREQ, VIW_TAB, WKLD_ANL ...
    
  • -Sserver_name[ \instance]
    Specifica il nome del computer e dell'istanza di SQL Server ai quali connettersi. Se si omette server_name, dta si connette all'istanza predefinita di SQL Server nel computer locale. Questa opzione è obbligatoria in caso di connessione a un'istanza denominata oppure di esecuzione di dta da un computer remoto in rete.

  • -ssession_name
    Specifica il nome della sessione di ottimizzazione. Questa opzione è obbligatoria se non si specifica -ID.

  • -Tftable_list_file
    Specifica il nome del file contenente l'elenco di tabelle da ottimizzare. Ogni tabella inclusa nel file deve iniziare su una nuova riga. Le tabelle devono essere qualificate con nomi di tabella composti da tre parti, ad esempio adventureworks2008R2.dbo.department. In alternativa, per richiamare la caratteristica di ridimensionamento delle tabelle, il nome di una tabella esistente può essere seguito da un numero che indica il numero previsto di righe nella tabella. Ottimizzazione guidata motore di database utilizza il numero previsto di righe durante l'ottimizzazione o la valutazione delle istruzioni nel carico di lavoro che fanno riferimento a queste tabelle. Si noti che possono essere presenti uno o più spazi tra il numero specificato per number_of_rows e table_name.

    Il formato file per 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]

    Questo argomento rappresenta un'alternativa all'immissione di un elenco di tabelle al prompt dei comandi (-Tl). Non utilizzare un file contenente l'elenco di tabelle (-Tf) se si specifica -Tl. Se vengono utilizzati entrambi gli argomenti, l'esecuzione di dta ha esito negativo e viene restituito un errore.

    Se si omettono gli argomenti -Tf e -Tl, tutte le tabelle utente nei database specificati verranno considerate per l'ottimizzazione.

  • -Tltable_list
    Specifica al prompt dei comandi un elenco di tabelle da ottimizzare. Per separare i nomi di tabella, utilizzare la virgola. Se con l'argomento -D viene specificato solo un database, non è necessario che i nomi delle tabelle vengano qualificati con un nome di database. In caso contrario, per ogni tabella sarà necessario specificare il nome completo nel formato: database_name.schema_name.table_name.

    Questo argomento rappresenta un'alternativa all'utilizzo di un file contenente un elenco di tabelle (-Tf). Se vengono utilizzati entrambi gli argomenti -Tl e -Tf, l'esecuzione dta ha esito negativo e viene restituito un errore.

  • -Ulogin_id
    Specifica l'ID di accesso utilizzato per connettersi a SQL Server.

  • -u
    Avvia l'interfaccia utente di Ottimizzazione guidata motore di database. Tutti i parametri vengono considerati come impostazioni iniziali dell'interfaccia utente.

  • -x
    Avvia la sessione di ottimizzazione e chiude l'utilità.

Osservazioni

Premere CTRL+C una volta per arrestare la sessione di ottimizzazione e generare le indicazioni in base all'analisi completata da dta fino a quel momento. Verrà richiesto di decidere se generare le indicazioni o meno. Premere nuovamente CTRL+C per arrestare la sessione di ottimizzazione senza generare le indicazioni.

Esempi

A. Ottimizzazione di un carico di lavoro che include indici e viste indicizzate nell'indicazione

Nell'esempio seguente viene utilizzata una connessione sicura (-E) per connettersi al database tpcd1G in MyServer per analizzare un carico di lavoro e creare indicazioni. Scrive l'output in un file di script denominato script.sql. Se script.sql esiste già, l'utilità dta sovrascriverà il file in quanto è stato specificato l'argomento -F. La sessione di ottimizzazione viene eseguita per un periodo illimitato di tempo per garantire l'analisi completa del carico di lavoro (-A 0). L'indicazione deve garantire un miglioramento minimo pari al 5% (-m 5). dta deve includere indici e viste indicizzate nell'indicazione finale (-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. Limitazione dell'utilizzo del disco

Nell'esempio seguente viene limitata la dimensione totale del database, che include i dati non elaborati e gli indici aggiuntivi, a 3 GB (-B 3000) e l'output viene reindirizzato su d:\result_dir\script1.sql. Il tempo di esecuzione non è maggiore di 1 ora (-A 60).

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

C. Limitazione del numero di query ottimizzate

Nell'esempio seguente il numero di query lette dal file orders_wkld.sql viene limitato a un massimo di 10 (-n 10) oppure il tempo di esecuzione viene limitato a 15 minuti (-A 15), a seconda di quale dei due eventi si verifica per primo. Per assicurarsi che tutte e 10 le query vengano ottimizzate, specificare un tempo di ottimizzazione illimitato tramite -A 0. Se il fattore tempo è rilevante, specificare un limite di tempo adeguato impostando il numero di minuti disponibili per l'ottimizzazione con l'argomento -A come illustrato nell'esempio seguente.

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

D. Ottimizzazione di tabelle specifiche elencate in un file

In questo esempio viene illustrato l'utilizzo di table_list_file (argomento -Tf). Il contenuto del file table_list.txt è riportato di seguito.

Adventureworks2008R2.dbo.customer  100000
adventureworks2008R2.dbo.store
adventureworks2008R2.dbo.product  2000000

Il contenuto di table_list.txt determina quanto segue:

  • Verranno ottimizzate solo le tabelle customer, store e product.

  • Si presuppone che il numero di righe delle tabelle customer e product sia rispettivamente 100.000 e 2.000.000.

  • Si presuppone inoltre che il numero di righe della tabella store sia il numero corrente di righe di tale tabella.

Si noti che possono essere presenti uno o più spazi tra il numero del totale delle righe e il nome precedente della tabella in table_list_file.

La durata dell'ottimizzazione è pari a 2 ore (-A 120) e l'output viene scritto in un file XML (-ox XMLTune.xml).

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