Come generare uno script di metadati del database necessarie per creare un database solo le statistiche in SQL Server

INTRODUZIONE

Query optimizer in Microsoft SQL Server utilizza i seguenti tipi di informazioni per determinare un piano di query ottimale:

  • Metadati del database

  • L'ambiente dell'hardware

  • Lo stato di sessione del database

In genere, è necessario simulare questi stessi tipi di informazioni se si desidera riprodurre il comportamento di query optimizer in un sistema di test.

Supporto tecnico clienti Microsoft potrebbe essere richiesto di generare uno script di metadati del database. Supporto tecnico clienti Microsoft utilizza questo script di metadati del database per esaminare un problema di ottimizzazione. In questo articolo viene descritta la procedura per generare lo script di statistiche. Vengono inoltre descritti come query optimizer utilizza le informazioni.

Ulteriori informazioni

Se si utilizza SQL Server 2005, prima di eseguire la procedura per generare lo script, assicurarsi che SQL Server Management Studio è la versione di SQL Server 2005 Service Pack 2 o versione successiva. Se si utilizzano versioni precedenti di SQL Server Management Studio in SQL Server 2005, la creazione guidata Script non contiene tutte le opzioni necessarie per i passaggi in questo articolo per il corretto funzionamento.

Script di tutto il database

Quando si genera un database solo statistiche duplicato, potrebbe essere più semplice e affidabile per l'intero database anziché singoli oggetti di script script. Quando è lo script di tutto il database, viene visualizzato i seguenti vantaggi:

  • È possibile evitare problemi con mancanti gli oggetti dipendenti necessari per riprodurre il problema.

  • Si richiedono molte meno operazioni per selezionare gli oggetti necessari.

Nota: Se si genera uno script per un database e i metadati per il database contengono migliaia di oggetti, il processo di script vengono utilizzate molte risorse di CPU. Si consiglia di generare lo script durante le ore notturne. In alternativa, è possibile utilizzare la seconda opzione per generare lo script per i singoli oggetti.

Per eseguire lo script ogni database a cui fa riferimento la query, procedere come segue:

  1. Aprire SQL Server Management Studio.

  2. In Esplora oggetti, espandere databasee quindi individuare il database che desidera generare lo script.

  3. Destro del mouse sul database, scegliere attivitàe quindi fare clic su Genera script.

  4. Nella creazione guidata Script, verificare che sia selezionato il database corretto. Fare clic per selezionare la casella di controllo Script tutti gli oggetti del database selezionato e quindi fare clic su Avanti.

  5. Nella finestra di dialogo Scegli opzioni di Script , è possibile modificare le impostazioni seguenti il valore predefinito per il valore elencato nella tabella riportata di seguito.

    Opzione di scripting

    Valore da selezionare

    Riempimento ANSI

    True

    Continua creazione script in errore

    True

    Genera Script per gli oggetti dipendenti

    True

    Includere i nomi di vincolo del sistema

    True

    Regole di confronto di script

    True

    Script creazione Database

    True

    Account di accesso di script

    True

    Autorizzazioni a livello di oggetto script

    True

    Script statistiche

    Script statistiche e istogrammi

    Script di indici

    True

    Trigger di script

    True

    Nota: L'Account di accesso di Script e l'opzione Autorizzazioni a livello di oggetto Script potrebbe non essere necessari, a meno che lo schema contiene oggetti che appartengono a un account di accesso diverso da dbo.

  6. Fare clic su Avanti.

  7. Fare clic sull'opzione di Script al File e quindi immettere un nome di file.

  8. Fare clic su Fine.

Singoli oggetti script

È possibile solo script singoli oggetti che fanno riferimento a una particolare query anziché la creazione di script di database completo. Tuttavia, a meno che non tutti gli oggetti di database creati utilizzando la clausola WITH SCHEMABINDING, le informazioni sulle dipendenze nella tabella di sistema sys.depends potrebbe non essere sempre accurate. L'imprecisione potrebbe causare uno dei seguenti problemi:

  • Il processo di script di non utilizzare un oggetto dipendente.

  • Il processo di script può creare uno script di oggetti nell'ordine corretto. Per eseguire correttamente lo script, è necessario modificare manualmente lo script generato.

Pertanto, si consiglia di non includere singoli oggetti, a meno che il database contiene molti oggetti e script in caso contrario richiederebbe troppo tempo. Se è necessario utilizzare singoli oggetti script, attenersi alla seguente procedura:

  1. In SQL Server Management Studio, espandere databasee quindi individuare il database che desidera generare lo script.

  2. Destro del mouse sul database, scegliere Database come Script, scegliere Crea pere quindi fare clic su File.

  3. Immettere un nome file e quindi fare clic su Salva.

    Il contenitore di database di base sarà inseriti nello script. Questo contenitore include file, gruppi di file, il database e le proprietà.

  4. Destro del mouse sul database, scegliere attivitàe quindi fare clic su Genera script.

  5. Assicurarsi che sia selezionato il database corretto e quindi fare clic su Avanti.

  6. Nella finestra di dialogo Scegli opzioni di Script , è possibile modificare le impostazioni seguenti il valore predefinito per il valore elencato nella tabella riportata di seguito.

    Opzione di scripting

    Valore da selezionare

    Riempimento ANSI

    True

    Continua creazione script in errore

    True

    Includere i nomi di vincolo del sistema

    True

    Genera Script per gli oggetti dipendenti

    True

    Regole di confronto di script

    True

    Account di accesso di script

    True

    Autorizzazioni a livello di oggetto script

    True

    Script statistiche

    Script statistiche e istogrammi

    Script utilizza DATABASE

    True

    Script di indici

    True

    Trigger di script

    True

    Nota: L'Account di accesso di Script e l'opzione Autorizzazioni a livello di oggetto Script potrebbe non essere necessari, a meno che lo schema contiene oggetti che appartengono a un account di accesso diverso da dbo.

  7. Nella finestra di dialogo Scegli tipi di oggetto , selezionare tutti i tipi di oggetto di database che fa riferimento la query che presentano problemi.

    Ad esempio, se la query fa riferimento solo a tabelle, selezionare le tabelle. Se la query fa riferimento a una visualizzazione, selezionare le tabelle e viste. Se la query problematica utilizza una funzione definita dall'utente, selezionare funzioni.

  8. Dopo aver selezionato tutti i tipi di oggetto cui fanno riferimento la query, fare clic su Avanti.

  9. Una finestra di dialogo viene visualizzata per ogni tipo di oggetto di database selezionato nel passaggio 7. In ogni finestra di dialogo, selezionare le specifiche tabelle, viste, funzioni o altri oggetti di database e quindi fare clic su Avanti.

  10. Fare clic sull'opzione di Script al File e quindi specificare lo stesso nome di file specificato nel passaggio 3.

  11. Fare clic su Fine per avviare la creazione di script.

Terminata la creazione di script, inviare il file di script per il supporto tecnico Microsoft. Del supporto tecnico Microsoft potrebbe inoltre richiedere le seguenti informazioni:

  • La configurazione hardware, incluso il numero di processori e la quantità di memoria fisica disponibile

  • Le opzioni SET che erano attive al momento dell'esecuzione della query

Nota: Che sia stato già fornito queste informazioni inviando un report SQLDiag o una traccia di SQL Profiler. Si può anche utilizzato un altro metodo per fornire queste informazioni.

Il modo in cui le informazioni vengono utilizzate

Le tabelle seguenti consentono di spiegare come query optimizer utilizza queste informazioni per selezionare un piano di query.

Metadati

Vincoli

Query optimizer utilizza spesso vincoli per rilevare le contraddizioni tra query e lo schema sottostante. Ad esempio, se la query include una "col WHERE = 5" clausola e un vincolo check "(col < 5) controllo" esiste, query optimizer sa che non le righe corrispondenti ai criteri.

Query optimizer rende tipi simili di detrazioni sul supporto di valori null. Ad esempio, la clausola "Dove col è NULL" è noto come true o false a seconda del supporto di valori null della colonna e se la colonna della tabella esterna di un outer join. La presenza di vincoli FOREIGN KEY è utile per determinare la cardinalità e l'ordine di join appropriato. Query optimizer può utilizzare informazioni sui vincoli per eliminare i join o semplificare predicati. Queste modifiche possono rimuovere il requisito per accedere a tabelle di base.

Statistiche

Le informazioni statistiche contengano densità e un istogramma che mostra la distribuzione della colonna iniziale della chiave di indice e le statistiche. A seconda della natura del predicato, query optimizer può utilizzare l'istogramma, densità o entrambi per stimare la cardinalità di un predicato. Le statistiche siano aggiornate necessarie per le stime accurate cardinalità. Le stime di cardinalità vengono utilizzate come input per la stima del costo di un operatore. Pertanto, è necessario disporre di stime di cardinalità buona per ottenere piani di query ottimali.

Dimensioni tabella (numero di righe e pagine)

Query optimizer utilizza l'istogrammi e la densità per calcolare la probabilità che un predicato specificato è true o false. La stima di cardinalità finale viene calcolata moltiplicando la probabilità per il numero di righe restituite dall'operatore figlio. Il numero di pagine della tabella o l'indice è un fattore per la stima del costo dei / o. Le dimensioni della tabella viene utilizzata per calcolare il costo di un'analisi ed è utile per la stima del numero di pagine che saranno accessibili durante una ricerca nell'indice.

Opzioni di database

Numerose opzioni database possono influenzare l'ottimizzazione. Le opzioni di AUTO_CREATE_STATISTICS e AUTO_UPDATE_STATISTICS influenzano sulla query optimizer vengono create nuove statistiche o aggiornamento delle statistiche che non è aggiornati. Il livello di PARAMETRIZZAZIONE influenza come parametri query di input prima che la query di input viene passata a query optimizer. Parametrizzazione può influire sulla stima di cardinalità e impedisce la corrispondenza con le viste indicizzate e altri tipi di ottimizzazioni. L'impostazione DATE_CORRELATION_OPTIMIZATION , l'utilità di ottimizzazione per la ricerca delle correlazioni tra le colonne. Questa impostazione influisce sulla stima dei costi e di cardinalità.

Ambiente

IMPOSTARE le opzioni di sessione

L' opzione ANSI_NULLS impostazione che interessa il "NULL = NULL" espressione viene valutata come true. Stima di cardinalità per gli outer join può variare in base all'impostazione corrente. Inoltre, possono anche modificare espressioni ambigue. Ad esempio, il "col = NULL" espressione in modo diverso in base all'impostazione. Tuttavia, il "col IS NULL" espressione restituisce sempre allo stesso modo.

Risorse hardware

Il costo per gli operatori di ordinamento e hash dipende dalla relativa quantità di memoria disponibile per SQL Server. Ad esempio, se la dimensione dei dati è maggiore di cache, query optimizer sa che i dati devono sempre essere effettuato lo spooling su disco. Tuttavia, se la dimensione dei dati è notevolmente inferiore nella cache, l'operazione è possa essere eseguita in memoria. Se il server dispone di più processori e il parallelismo non è stato disabilitato mediante un suggerimento "MAXDOP" o l'opzione di configurazione massimo grado di parallelismo , SQL Server considera inoltre diverse ottimizzazioni.

Serve aiuto?

Amplia le tue competenze
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa a Microsoft Insider

Queste informazioni sono risultate utili?

Grazie per il feedback!

Grazie per il tuo feedback! Potrebbe essere utile metterti in contatto con uno dei nostri operatori del supporto di Office.

×