Al momento sei offline in attesa che la connessione Internet venga ristabilita

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

IMPORTANTE: il presente articolo è stato tradotto tramite un software di traduzione automatica di Microsoft ed eventualmente revisionato dalla community Microsoft tramite la tecnologia CTF (Community Translation Framework) o da un traduttore professionista. Microsoft offre articoli tradotti manualmente e altri tradotti automaticamente e rivisti dalla community con l’obiettivo di consentire all'utente di accedere a tutti gli articoli della Knowledge Base nella propria lingua. Tuttavia, un articolo tradotto automaticamente, anche se rivisto dalla community, non sempre è perfetto. Potrebbe contenere errori di vocabolario, di sintassi o di grammatica. Microsoft declina ogni responsabilità per imprecisioni, errori o danni causati da una traduzione sbagliata o dal relativo utilizzo da parte dei clienti. Microsoft aggiorna frequentemente il software e gli strumenti di traduzione automatica per continuare a migliorare la qualità della traduzione.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 914288
INTRODUZIONE
Query optimizer in Microsoft SQL Server utilizza i seguenti tipi di informazioni per determinare un piano di query ottimale:
  • I metadati del database
  • L'ambiente dell'hardware
  • Lo stato della sessione di 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 dei metadati del database per esaminare un problema di ottimizzazione. In questo articolo vengono descritti i passaggi per generare lo script di statistiche. Viene inoltre descritto come query optimizer utilizza le informazioni.
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 funzioni correttamente.

Script l'intero database

Quando si genera un database solo statistiche duplicato, potrebbe essere più semplice e affidabile l'intero database anziché singoli oggetti di script tramite script. Quando si creano script l'intero database, si ricevono 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 richiede notevoli risorse 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, attenersi alla seguente procedura:
  1. Aprire SQL Server Management Studio.
  2. In Esplora oggettiespandere 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 , modificare le impostazioni seguenti rispetto al valore predefinito per il valore elencato nella tabella riportata di seguito.
    Opzione di scriptingValore da selezionare
    Riempimento con caratteri ANSITrue
    Continua creazione script in erroreTrue
    Genera Script per gli oggetti dipendentiTrue
    Includere i nomi di vincolo del sistemaTrue
    Regole di confronto di scriptTrue
    Script creazione DatabaseTrue
    Account di accesso di scriptTrue
    Autorizzazioni a livello di oggetto scriptTrue
    Script statisticheScript statistiche e istogrammi
    Script indiciTrue
    Trigger di scriptTrue
    Nota L'opzione 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 per File e quindi immettere un nome di file.
  8. Fare clic su Fine.

Singoli oggetti script

Si possono solo singoli oggetti script che fa riferimento una particolare query invece 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. Questa imprecisione potrebbe causare uno dei seguenti problemi:
  • Il processo di creazione di script non lo script di un oggetto dipendente.
  • Il processo di creazione di script può creare uno script di oggetti nell'ordine corretto. Per eseguire correttamente lo script, è necessario modificare manualmente lo script generato.
Pertanto, si sconsiglia di script singoli oggetti, a meno che il database dispone di 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 verrà inseriti in script. Questo contenitore include file, gruppi di file, il database e 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 , modificare le impostazioni seguenti rispetto al valore predefinito per il valore elencato nella tabella riportata di seguito.
    Opzione di scriptingValore da selezionare
    Riempimento con caratteri ANSITrue
    Continua creazione script in erroreTrue
    Includere i nomi di vincolo del sistemaTrue
    Genera Script per gli oggetti dipendentiTrue
    Regole di confronto di scriptTrue
    Account di accesso di scriptTrue
    Autorizzazioni a livello di oggetto scriptTrue
    Script statisticheScript statistiche e istogrammi
    Script utilizza DATABASETrue
    Script indiciTrue
    Trigger di scriptTrue
    Nota L'opzione 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 problematica.

    Ad esempio, se la query fa riferimento solo a tabelle, selezionare <b00> </b00>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 fa riferimento la query, fare clic su Avanti.
  9. Viene visualizzata una finestra di dialogo 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 per File e quindi specificare lo stesso nome di file specificato nel passaggio 3.
  11. Fare clic su Fine per avviare la creazione di script.
Quando ha terminato la creazione di script, è possibile inviare il file di script per il personale del supporto tecnico. Il personale del supporto tecnico può chiedere anche le seguenti informazioni:
  • La configurazione hardware, incluso il numero di processori e la quantità di memoria fisica esistente
  • Le opzioni SET che erano attive durante l'esecuzione della query
Nota Si potrebbe avere già fornito questo inviando un report SQLDiag o una traccia di SQL Profiler. È possibile utilizzare anche un altro metodo per fornire queste informazioni.

Utilizzo di informazioni

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

Metadati

VincoliQuery optimizer utilizza frequentemente i vincoli per rilevare le contraddizioni tra query e lo schema sottostante. Ad esempio, se la query include un "col WHERE = 5" clausola e un controllo"(col< 5)"="" check="" constraint="" exists,="" the="" query="" optimizer="" knows="" that="" no="" rows="" will="">

Query optimizer rende tipi simili di detrazioni sul supporto di valori null. Ad esempio, la clausola "Dove col è NULL" risulta essere 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 di chiave esterna è utile per determinare l'ordine di join appropriato e la cardinalità. Query optimizer può utilizzare informazioni relative ai vincoli per eliminare i join o semplificare predicati. Queste modifiche possono rimuovere il requisito per accedere alle tabelle di base.
StatisticheLe 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 densità e/o l'istogramma 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 nella stima del costo di un operatore. Pertanto, è necessario disporre le stime di cardinalità buona per ottenere piani di query ottimali.
Dimensioni tabella (numero di righe e pagine)Query optimizer utilizza la densità e istogrammi 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 nella tabella o l'indice è un fattore nella stima del costo dei / o. Le dimensioni della tabella viene utilizzata per calcolare il costo di un'analisi e risulta utile quando si stima che il numero di pagine accessibili durante una ricerca nell'indice.
Opzioni di databaseNumerose opzioni database possono influire sulla ottimizzazione. Le opzioni AUTO_CREATE_STATISTICS e AUTO_UPDATE_STATISTICS influiscono sulla query optimizer crea nuove statistiche o statistiche delle aggiornamento non è aggiornati. Il livello di PARAMETRIZZAZIONE influenza come parametri per query di input prima che la query di input viene passata a query optimizer. Parametrizzazione può influire sulla stima di cardinalità e può anche impedire la corrispondenza con le viste indicizzate e altri tipi di ottimizzazioni. L'impostazione DATE_CORRELATION_OPTIMIZATION fa sì che l'utilità di ottimizzazione per la ricerca delle correlazioni tra le colonne. Questa impostazione influisce sulla stima dei costi e cardinalità.

Ambiente

IMPOSTARE le opzioni di sessioneL' opzione ANSI_NULLS impostazione ha effetto se 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 le espressioni ambigue. Ad esempio, il "col = NULL" dell'espressione in modo diverso in base all'impostazione. Tuttavia, il "col IS NULL" dell'espressione sempre allo stesso modo.
Risorse hardwareIl 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 le dimensioni dei dati sono minori di quelle della cache, l'operazione rischia di essere eseguita in memoria. Se il server dispone di più processori e parallelismo non è stata disattivata mediante un suggerimento "MAXDOP" o l'opzione di configurazione del massimo grado di parallelismo , SQL Server considera inoltre diverse ottimizzazioni.
Clone db

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 914288 - Ultima revisione: 01/27/2015 21:00:00 - Revisione: 1.0

Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Web, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Web, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2008 R2 Web, Microsoft SQL Server 2008 R2 Workgroup, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Web, Microsoft SQL Server 2008 Workgroup, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Enterprise X64 Edition, Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Standard X64 Edition, Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems

  • kbexpertiseinter kbexpertiseadvanced kbsql2005engine kbhowto kbinfo kbmt KB914288 KbMtit
Feedback