Zum Generieren eines Skripts der erforderlichen Datenbankmetadaten zum Erstellen einer Statistik-only-Datenbank in SQL Server 2005 und SQL Server 2008

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 914288 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

EINFÜHRUNG

Der Abfrageoptimierer in Microsoft SQL Server 2005 oder Microsoft SQL Server 2008 verwendet die folgenden Arten von Informationen, um einen optimale Abfrage-Plan zu bestimmen:
  • Die Datenbankmetadaten
  • Die Hardwareumgebung
  • Der Sitzungszustand-Datenbank
In der Regel müssen Sie diese dieselben Arten von Informationen simulieren, wenn Sie Reproduzieren des Verhaltens der Abfrageoptimierer auf einem Testsystem.

Microsoft Product Support Services fordert Sie zum Generieren von einem Skript die Datenbankmetadaten möglicherweise. Microsoft Product Support Services verwendet dieses Skript der Datenbankmetadaten-um ein Problem Optimierer zu untersuchen. Dieser Artikel beschreibt die Schritte zum Statistik-Skript generieren. Dieser Artikel beschreibt außerdem, wie der Abfrageoptimierer die Informationen verwendet.

Weitere Informationen

Wenn Sie SQL Server 2005, verwenden bevor Sie die Schritte zum Generieren des Skripts ausführen, stellen Sie sicher, dass SQL Server Management Studio SQL Server 2005 Service Pack 2-Version oder eine höhere Version ist. Wenn Sie die frühere Versionen von SQL Server Management Studio in SQL Server 2005 verwenden, enthält der Skript-Assistent nicht alle erforderlichen Optionen für die Schritte in diesem Artikel ordnungsgemäß funktioniert.

Skript für die gesamte Datenbank

Wenn Sie eine Datenbank nur Statistiken-Klon generieren, kann es einfacher und zuverlässiger Skript erstellen, die gesamte Datenbank anstelle der Skripterstellung für einzelne Objekte sein. Wenn Sie ein Skript die gesamte Datenbank erstellen, erhalten Sie die folgenden Vorteile:
  • Vermeiden Sie Probleme mit fehlenden abhängigen Objekte, die zum Reproduzieren des Problems erforderlich sind.
  • Sie benötigen erheblich weniger Schritte um die erforderlichen Objekte auszuwählen.
Hinweis: Wenn Sie ein Skript für eine Datenbank generieren und die Metadaten für die Datenbank Tausende von Objekten enthält, verbraucht der Skripterstellung Prozess erhebliche Prozessorressourcen. Es wird empfohlen, dass das Skript außerhalb der Spitzenzeiten generieren. Oder können Sie die zweite Option um das Skript für einzelne Objekte zu generieren.

Gehen Sie folgendermaßen vor jeder Datenbank Skript erstellen, die die Abfrage verweist,
  1. Öffnen Sie SQL Server Management Studio.
  2. Erweitern Sie Datenbanken in der Objekt-Explorer und suchen Sie die Datenbank, die Sie Skripts erstellen möchten.
  3. Klicken Sie mit der rechten Maustaste auf die Datenbank, zeigen Sie auf Vorgänge und klicken Sie auf Skripts generieren .
  4. Stellen Sie im Skript-Assistenten sicher, dass die richtige Datenbank ausgewählt ist. Klicken Sie auf das Kontrollkästchen Skript alle Objekte in der ausgewählten Datenbank , und klicken Sie dann auf Weiter .
  5. Ändern Sie die folgenden Einstellungen vom Standardwert in den Wert, der in der folgenden Tabelle aufgeführt ist, im Dialogfeld Script Options auswählen .
    Tabelle minimierenTabelle vergrößern
    SkriptoptionWert auswählen
    ANSI-Abstände True
    on Error Scripting fortsetzen True
    Skript für abhängige Objekte generieren True
    System Einschränkung Namen einschließen True
    Skript-Sortierung True
    Skript-Datenbank erstellen True
    Skript-Anmeldungen True
    Skript-Ebene Objektberechtigungen True
    Skript-Statistik Skript für Statistiken und Histogramme
    Skript-Indizes True
    Skript-Trigger True
    Hinweis: Die Option Skript Benutzernamen und die Option Skript für Berechtigungen auf Objekt können nicht erforderlich sein, wenn das Schema enthält Objekte, die Benutzernamen außer Dbo gehören.
  6. Klicken Sie auf Weiter .
  7. Klicken Sie auf die Option Skript in Datei , und geben Sie einen Dateinamen.
  8. Klicken Sie auf Fertig stellen .

Einzelne Objekte für Skript

Sie können nur einzelnen Skriptobjekte, auf die von einer bestimmten Abfrage anstelle der Skripterstellung für der vollständigen Datenbank verwiesen wird. Allerdings, wenn alle Datenbankobjekte mithilfe der WITH SCHEMABINDING-Klausel erstellt wurden, Abhängigkeit in der sys.depends -Systemtabelle nicht immer genaue möglicherweise Informationen. Dieser Fehler kann eine der folgenden Probleme verursachen:
  • Der scripting Prozess nicht abhängigen Objekts Skript.
  • Der scripting-Prozess möglicherweise Objekte in der falschen Reihenfolge Skript. Das Skript erfolgreich ausgeführt wird, müssen Sie das generierte Skript manuell bearbeiten.
Daher empfohlen nicht, dass Sie einzelne Objekte Skript, wenn die Datenbank eine Vielzahl von Objekten hat und scripting andernfalls zu lang würde. Wenn Sie die einzelnen Skriptobjekte verwenden müssen, gehen Sie folgendermaßen vor:
  1. Erweitern Sie Datenbanken in SQL Server Management Studio und suchen Sie die Datenbank, die Sie Skripts erstellen möchten.
  2. Klicken Sie mit der rechten Maustaste auf die Datenbank, zeigen Sie auf Datenbank Skript unter , zeigen Sie auf CREATE, und klicken Sie dann auf Datei .
  3. Geben Sie einen Dateinamen ein, und klicken Sie dann auf Speichern .

    Der zentrale Datenbank-Container werden Skript aufgenommen. Dieser Container umfasst Dateien, Dateigruppen, die Datenbank und Eigenschaften.
  4. Klicken Sie mit der rechten Maustaste auf die Datenbank, zeigen Sie auf Vorgänge und klicken Sie auf Skripts generieren .
  5. Stellen Sie sicher, dass die richtige Datenbank ausgewählt ist, und klicken Sie dann auf Weiter .
  6. Ändern Sie die folgenden Einstellungen vom Standardwert in den Wert, der in der folgenden Tabelle aufgeführt ist, im Dialogfeld Script Options auswählen .
    Tabelle minimierenTabelle vergrößern
    SkriptoptionWert auswählen
    ANSI-Abstände True
    on Error Scripting fortsetzen True
    System Einschränkung Namen einschließen True
    Skript für abhängige Objekte generieren True
    Skript-Sortierung True
    Skript-Anmeldungen True
    Skript-Ebene Objektberechtigungen True
    Skript-Statistik Skript für Statistiken und Histogramme
    USE DATABASE-Skript True
    Skript-Indizes True
    Skript-Trigger True
    Hinweis: Die Option Skript Benutzernamen und die Option Skript für Berechtigungen auf Objekt können nicht erforderlich sein, wenn das Schema enthält Objekte, die Benutzernamen außer Dbo gehören.
  7. Wählen Sie im Dialogfeld Objekttypen auswählen alle Datenbank-Objekttypen, die die problematische Abfrage verweist.

    Beispielsweise, wenn die Abfrage nur Tabellen verweist, wählen Sie Tabellen aus . Wenn die Abfrage eine Sicht verweist, wählen Sie Ansichten und Tabellen . Wenn die problematische Abfrage eine benutzerdefinierte Funktion verwendet, wählen Sie Funktion .
  8. Wenn Sie alle Objekttypen ausgewählt haben, auf die von der Abfrage verwiesen wird, klicken Sie auf Weiter .
  9. Ein Dialogfeld wird für jedes Datenbank-Objekttyp, den Sie im Schritt 7 ausgewählt angezeigt. Wählen Sie in jedem Dialogfeld bestimmten Tabellen, Ansichten, Funktionen oder andere Datenbankobjekte und klicken Sie dann auf Weiter .
  10. Klicken Sie auf die Option Skript in Datei , und geben Sie den gleichen Dateinamen, den Sie in Schritt 3 eingegeben haben.
  11. Klicken Sie auf Fertig stellen , um die Skripts starten.
Wenn die Skripts abgeschlossen hat, senden Sie die Skriptdatei an Microsoft-Supportmitarbeiter. Microsoft Software Service kann auch die folgende Informationen anfordern:
  • Die Hardwarekonfiguration, einschließlich der Anzahl der Prozessoren und wie viel physischer Arbeitsspeicher vorhanden ist
  • SET-Optionen, die aktiv, waren als Sie die Abfrage ausgeführt haben
Hinweis: Sie können bereits diese Informationen bereitgestellt haben per einen SQLDiag-Bericht oder eine SQL Profiler-Ablaufverfolgung. Sie haben auch eine andere Methode verwendet, um diese Informationen bereitstellen.

Wie die Informationen verwendet

Die folgenden Tabellen helfen, Erläutern Sie, wie der Abfrageoptimierer diese Informationen verwendet, um einen Abfrageplan auszuwählen.

Metadaten

Tabelle minimierenTabelle vergrößern
EinschränkungenDer Abfrageoptimierer verwendet häufig Einschränkungen, um Contradictions zwischen der Abfrage und das zugrunde liegende Schema zu erkennen. Beispielsweise, wenn die Abfrage hat eine ? WHERE Col = 5 "-Klausel und eine"CHECK (Col < 5)"Check-Einschränkung vorhanden ist, der Abfrageoptimierer erkennt, dass keine Zeilen entsprechen.

Der Abfrageoptimierer stellt ähnliche Arten von Abzügen über NULL-Zulässigkeit. Die "Col WHERE IS NULL"-Klausel wird z. B. True oder False, je nachdem, die NULL-Zulässigkeit der Spalte und ob die Spalte aus der äußeren Tabelle eine äußere Verknüpfung ist werden bezeichnet. Das Vorhandensein der FOREIGN KEY-Einschränkungen ist nützlich, um Kardinalität und die entsprechenden Verknüpfungsreihenfolge zu bestimmen. Der Abfrageoptimierer können Einschränkungsinformationen beseitigen Verknüpfungen oder Prädikate vereinfachen. Diese Änderungen können die Anforderung, auf die Basistabellen zugreifen entfernen.
StatistikStatistische Informationen enthält, Dichte und ein Histogramm mit die Verteilung der führende Spalte des Schlüssels Index und Statistiken. Je nach Art des Prädikats können der Abfrageoptimierer Dichte, Histogramm oder beides das Kardinalität eines Prädikats schätzen. Aktuelle Statistiken sind für genaue Kardinalität-Schätzungen erforderlich. Die Kardinalität-Schätzungen werden als Eingabe in die Schätzung der Kosten für einen Operator verwendet. Daher benötigen Sie gute Kardinalität-Schätzungen um eine optimale Abfragepläne zu erhalten.
Tabellengröße (Anzahl der Zeilen und Seiten)Der Abfrageoptimierer verwendet die Histogramme und Dichte, um die Wahrscheinlichkeit zu berechnen, dass ein Prädikat angegebenen true oder false ist. Die endgültige Kardinalität-Schätzung wird durch Multiplizieren der Wahrscheinlichkeit, dass durch die Anzahl der Zeilen, die vom untergeordneten Operator zurückgegeben werden berechnet. Die Anzahl Seiten in der Tabelle oder der Index ist ein Faktor in die e/A-Kosten einschätzen. Die Tabellengröße dient, die Kosten einer Überprüfung zu berechnen, und ist nützlich, wenn Sie die Anzahl der Seiten schätzen, auf die während der Suche einen Index zugegriffen werden.
DatenbankoptionenMehrere Datenbankoptionen können Optimierung auswirken. Die Optionen AUTO_CREATE_STATISTICS und AUTO_UPDATE_STATISTICS beeinflussen, ob der Abfrageoptimierer erstellt wird, neue Statistiken oder Statistiken aktualisieren, die veraltet sind. Die PARAMETERIZATION Ebene wirkt sich wie die Eingabeabfrage parametrisiert ist, bevor der Abfrageoptimierer die Eingabeabfrage übergeben wird. Parametrisierung kann Kardinalität-Schätzung beeinflussen und kann auch für indizierte Sichten und andere Arten von Optimierungen übereinstimmenden verhindern. Die DATE_CORRELATION_OPTIMIZATION -Einstellung bewirkt, dass den Optimierer Korrelationen zwischen den Spalten gesucht. Diese Einstellung betrifft Kardinalität und Kosten Schätzungen.

Umgebung

Tabelle minimierenTabelle vergrößern
Sitzung SET-OptionenDie ANSI_NULLS festlegen beeinflusst, ob die "NULL = NULL" Ausdruck als True ausgewertet wird. Kardinalität-Schätzung für äußere Verknüpfungen möglicherweise abhängig von der aktuellen Einstellung ändern. Darüber hinaus können mehrdeutige Ausdrücke ebenfalls ändern. Z. B. die "Col = NULL"-Ausdruck anders basierend auf der Einstellung. Allerdings die "Col IS NULL" Ausdruck ergibt immer die gleiche Weise.
HardwareressourcenDie Kosten für sortieren und Hash Operatoren hängen von die relative Größe des Arbeitsspeichers, die für SQL Server verfügbar ist. Z. B. der Abfrageoptimierer, wenn die Größe der Daten größer als der Cache ist, weiß, dass die Daten immer gespoolt müssen auf dem Datenträger. Wenn die Größe der Daten viel kleiner als der Cache ist, ist der Vorgang wahrscheinlich im Speicher erfolgen. SQL Server betrachtet auch andere Optimierungen, wenn der Server mehr als einen Prozessor verfügt und wenn Parallelität nicht über einen Hinweis "MAXDOP" oder die Konfigurationsoption max Degree of Parallelism deaktiviert wurde.
SQL Server vordefinierten aktualisieren Unit (LME)Bestimmte Features sind nur auf bestimmten Editionen von SQL Server 2005 oder SQL Server 2008 aktiviert. Beispielsweise tritt eine Abfrage für indizierte Sichten nur in SQL Server 2005 Enterprise Edition. Ebenso ist die entsprechende gegen Plan Führungslinien auf SQL Server 2000 Standard Edition und SQL Server 2005 Enterprise Edition beschränkt.

Eigenschaften

Artikel-ID: 914288 - Geändert am: Dienstag, 7. April 2009 - Version: 3.0
Die Informationen in diesem Artikel beziehen sich auf:
  • 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
  • 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
Keywords: 
kbmt kbexpertiseinter kbexpertiseadvanced kbsql2005engine kbhowto kbinfo KB914288 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 914288
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com