Sie sind zurzeit offline. Es wird auf die erneute Herstellung einer Internetverbindung gewartet.

Ihr Browser wird nicht unterstützt.

Sie müssen Ihren Browser aktualisieren, um die Website zu verwenden.

Aktualisieren Sie auf die neueste Version von Internet Explorer.

Generieren Sie ein Skript der erforderlichen Datenbankmetadaten, die in SQL Server eine Datenbank nur Statistiken erstellen

Wichtig: Dieser Artikel wurde maschinell übersetzt und wird dann möglicherweise mithilfe des Community Translation Framework (CTF) von Mitgliedern unserer Microsoft Community nachbearbeitet. Weitere Informationen zu CTF finden Sie unter http://support.microsoft.com/gp/machine-translation-corrections/de.

Den englischen Originalartikel können Sie über folgenden Link abrufen: 914288
Einführung
Der Abfrageoptimierer in Microsoft SQL Server verwendet die folgenden Arten von Informationen einen optimale Abfrage-Plan zu bestimmen:
  • Die Datenbank-Metadaten
  • Der Hardware-Umgebung
  • Der Sitzungszustand Datenbank
In der Regel müssen Sie diese dieselbe Art von Informationen Sie ggf. zum Reproduzieren des Verhaltens des Abfrageoptimierers auf einem Testsystem simulieren.

Microsoft Product Support Services fordert Sie möglicherweise auf ein Skript für die Datenbank-Metadaten zu generieren. Microsoft Product Support Services verwendet dieses Skript für die Datenbank-Metadaten Optimizer Problem zu untersuchen. Dieser Artikel beschreibt die Schritte, um die Statistics-Skripts generieren. Der Artikel beschreibt außerdem, wie der Abfrageoptimierer die Informationen verwendet.
Weitere Informationen
Wenn Sie SQL Server 2005, bevor Sie die Schritte zum Erstellen der Skripts verwenden, stellen Sie sicher, dass SQL Server Management Studio die Version von SQL Server 2005 Service Pack 2 oder höher ist. Wenn Sie frühere Versionen von SQL Server Management Studio in SQL Server 2005 verwenden, enthält der Skript-Assistent keine alle erforderlichen Optionen für die Schritte in diesem Artikel ordnungsgemäß funktioniert.

Skript für die gesamte Datenbank

Beim Erstellen einer Statistik nur Clone-Datenbank kann es einfacher und zuverlässiger, Skript für die gesamte Datenbank anstelle der Skripterstellung für einzelne Objekte sein. Wenn Sie die gesamte Datenbank ausführen, erhalten Sie folgende Vorteile:
  • Vermeiden Sie Probleme mit fehlenden abhängigen Objekte, die zum Reproduzieren des Problems erforderlich sind.
  • Sie benötigen bedeutend weniger Arbeitsschritte, 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 des Skripting-Prozesses bedeutende CPU-Ressourcen. Es wird empfohlen, dass das Skript während der Spitzenzeiten zu generieren. Oder können Sie die zweite Option um das Skript für einzelne Objekte zu generieren.

Um das Skript für jede Datenbank, die von der Abfrage verwiesen wird, gehen Sie folgendermaßen vor:
  1. Öffnen Sie SQL Server Management Studio.
  2. Erweitern Sie Datenbankenim Objekt-Explorer, und suchen Sie dann die Datenbank, für die Sie Skripts erstellen möchten.
  3. Mit der rechten Maustaste in der Datenbank, zeigen Sie auf Tasks, und klicken Sie dann auf Skripts generieren.
  4. Im Skript-Assistenten stellen Sie sicher, dass die korrekte Datenbank ausgewählt ist. Aktivieren Sie das Kontrollkästchen Skript alle Objekte in der ausgewählten Datenbank , und klicken Sie dann auf Weiter.
  5. Ändern Sie die folgenden Einstellungen im Dialogfeld Skriptoptionen auswählen aus dem Standardwert auf den Wert, der in der folgenden Tabelle aufgeführt ist.
    SkriptoptionWert auswählen
    ANSI-LeerstellenTrue
    Fortsetzen Sie Skripterstellung bei einem FehlerTrue
    Skript für abhängige Objekte generierenTrue
    Systemeinschränkungsnamen einschließenTrue
    SkriptsortierungTrue
    Skripterstellung für DatenbankerstellungTrue
    Skripterstellung für AnmeldungenTrue
    Skriptberechtigungen auf ObjektebeneTrue
    Skripterstellung für StatistikenSkripterstellung für Statistiken und Histogramme
    Skript für IndizesTrue
    Skript für TriggerTrue
    Hinweis Die Skripterstellung für Anmeldungen Option und die Option Skript für Berechtigungen auf Objekt möglicherweise nicht erforderlich, wenn das Schema-Objekte enthält, die Anmeldungen als Dbogehören.
  6. Klicken Sie auf Weiter.
  7. Klicken Sie auf die Option Skript in Datei schreiben , und geben Sie dann einen Dateinamen ein.
  8. Klicken Sie auf Fertig stellen.

Einzelnen Skriptobjekte

Sie können nur einzelne Skriptobjekte, die von einer bestimmten Abfrage anstelle die gesamten Datenbank scripting verwiesen werden. Jedoch, wenn alle Datenbankobjekte mithilfe der WITH SCHEMABINDING-Klausel erstellt wurden, kann die Abhängigkeitsinformationen in der Systemtabelle sys.depends nicht immer genau sein. Dieser Fehler kann eines der folgenden Probleme verursachen:
  • Des Skripting-Prozesses ist ein abhängiges Objekt keine Skripterstellung.
  • Objekte in der falschen Reihenfolge des Skripting-Prozesses möglicherweise Skript erstellen. Um das Skript erfolgreich ausgeführt wurde, müssen Sie das generierte Skript manuell bearbeiten.
Aus diesem Grund empfohlen nicht, dass Sie einzelne Objekte Skript, wenn die Datenbank viele Objekte aufweist und scripting würde sonst zu lange dauern. Wenn Sie die einzelnen Skriptobjekte verwenden müssen, gehen Sie folgendermaßen vor:
  1. Erweitern Sie Datenbankenin SQL Server Management Studio, und suchen Sie dann die Datenbank, für die Sie Skripts erstellen möchten.
  2. Mit der rechten Maustaste in der Datenbank, zeigen Sie auf Skript für Datenbank als, zeigen Sie auf erstellen,und klicken Sie auf Datei.
  3. Geben Sie einen Dateinamen ein, und klicken Sie dann auf Speichern.

    Der zentrale Datenbank-Container werden Skripts verwendet werden. Dieser Container enthält Dateien, Dateigruppen, die Datenbank und Eigenschaften.
  4. Mit der rechten Maustaste in der Datenbank, zeigen Sie auf Tasks, und klicken Sie dann auf Skripts generieren.
  5. Stellen Sie sicher, dass die korrekte Datenbank ausgewählt ist, und klicken Sie dann auf Weiter.
  6. Ändern Sie die folgenden Einstellungen im Dialogfeld Skriptoptionen auswählen aus dem Standardwert auf den Wert, der in der folgenden Tabelle aufgeführt ist.
    SkriptoptionWert auswählen
    ANSI-LeerstellenTrue
    Fortsetzen Sie Skripterstellung bei einem FehlerTrue
    Systemeinschränkungsnamen einschließenTrue
    Skript für abhängige Objekte generierenTrue
    SkriptsortierungTrue
    Skripterstellung für AnmeldungenTrue
    Skriptberechtigungen auf ObjektebeneTrue
    Skripterstellung für StatistikenSkripterstellung für Statistiken und Histogramme
    Skript-Datenbank verwendenTrue
    Skript für IndizesTrue
    Skript für TriggerTrue
    Hinweis Die Skripterstellung für Anmeldungen Option und die Option Skript für Berechtigungen auf Objekt möglicherweise nicht erforderlich, wenn das Schema-Objekte enthält, die Anmeldungen als Dbogehören.
  7. Wählen Sie im Dialogfeld Objekttypen auswählen alle Datenbank-Objekttypen, die die problematische Abfrage verweist.

    Wenn die Abfrage nur Tabellen verweist, z. B. Wählen Sie <b00> </b00>Tabellen. Wenn die Abfrage eine Ansicht referenziert, wählen Sie Ansichten und Tabellen aus. Wenn die problematische Abfrage eine benutzerdefinierten Funktion verwendet wird, wählen Sie Funktionenaus.
  8. Wenn Sie alle Objekttypen ausgewählt haben, die von der Abfrage referenziert werden, klicken Sie auf Weiter.
  9. Für jeden Datenbankobjekttyp, den Sie in Schritt 7 ausgewählt, wird ein Dialogfeld 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 schreiben , und geben Sie dann denselben Dateinamen, den Sie in Schritt 3 eingegeben haben.
  11. Klicken Sie auf Fertig stellen , um das Skript zu starten.
Wenn die Skripterstellung abgeschlossen hat, senden Sie die Skriptdatei Microsoft Support Services. Die Microsoft-Supportmitarbeiter können auch folgende Auskünfte verlangen:
  • Die Hardware-Konfiguration, einschließlich der Anzahl der Prozessoren und wie viel physischer Speicher vorhanden ist.
  • Die SET-Optionen, die aktiv waren, wenn Sie die Abfrage ausgeführt wurde
Hinweis Sie können bereits diese Informationen gegeben haben einen SQLDiag-Bericht oder eine SQL Profiler-Ablaufverfolgung gesendet. Sie können auch eine andere Methode verwendet haben, diese Informationen anzugeben.

Wie die Daten verwendet werden

In den folgenden Tabellen erklären, wie der Abfrageoptimierer diese Informationen verwendet, um einen Abfrage-Plan auszuwählen.

Metadaten

EinschränkungenDie Abfrageoptimierer verwendet häufig Einschränkungen Widersprüche zwischen der Abfrage und das zugrunde liegende Schema zu erkennen. Beispielsweise, wenn die Abfrage eine "WHERE Col = 5"-Klausel und eine "CHECK (Col< 5)"="" check="" constraint="" exists,="" the="" query="" optimizer="" knows="" that="" no="" rows="" will="">

Die Abfrageoptimierer stellt ähnliche Arten von Abzügen über NULL-Zulässigkeit. Z. B. ist die Klausel "Col WHERE IS NULL" auf True oder False, abhängig von der NULL-Zulässigkeit der Spalte und gibt an, ob die Spalte von der äußeren Tabelle eines outer-Joins ist bekannt. Das Vorhandensein von FOREIGN KEY-Einschränkungen ist hilfreich, um Kardinalität und die geeignete Join-Reihenfolge zu ermitteln. Die Abfrageoptimierer können Einschränkungsinformationen Joins eliminieren oder Prädikate zu vereinfachen. Diese Änderungen können die Anforderung auf die Basistabellen zugreifen entfernen.
StatistikDie Statistikinformationen enthält Dichte und ein Histogramm mit der Verteilung der führenden Spalte des Schlüssels Index und Statistiken. Je nach Art des Prädikats können die Abfrageoptimierer Dichte oder dem Histogramm Sie um die Kardinalität eines Prädikats zu 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 eines Operators verwendet. Aus diesem Grund benötigen Sie gute Kardinalität-Schätzungen um optimale Abfragepläne zu erhalten.
Größe (Anzahl der Zeilen und Seiten)Der Abfrageoptimierer verwendet die Histogramme und Dichte, mit die Wahrscheinlichkeit, dass ein angegebenes Prädikat true oder false ist. Die endgültige Kardinalität-Schätzung wird berechnet durch Multiplikation der Wahrscheinlichkeit durch die Anzahl der Zeilen, die durch das Child-Operators zurückgegeben werden.Die Anzahl der Seiten in der Tabelle oder der Index ist ein Faktor bei der Schätzung der e/a-Kosten. Die Tabellengröße wird verwendet, um die Kosten für einen Scan zu berechnen, und ist nützlich, wenn Sie beim Schätzen der Anzahl der Seiten, die eine Indexsuche zugegriffen wird.
DatenbankoptionenMehrere Datenbankoptionen können Optimierung auswirken. Die Optionen AUTO_CREATE_STATISTICS und AUTO_UPDATE_STATISTICS beeinflussen, ob die Abfrageoptimierer erstellt neue Statistiken oder Statistiken aktualisieren, die nicht mehr aktuell sind. Die PARAMETRISIERUNG Ebene wirkt sich auf wie die Eingabeabfrage parametrisiert wird, bevor der Abfrageoptimierer die Eingabeabfrage übergeben wird. Parametrisierung kann kardinalitätsschätzungen beeinflussen, und Sie können auch verhindern, Übereinstimmung mit indizierten Sichten und andere Arten von Optimierungen. Die DATE_CORRELATION_OPTIMIZATION -Einstellung bewirkt, dass den Optimierer nach Korrelationen zwischen den Spalten zu suchen. Diese Einstellung wirkt sich auf Kardinalität und Kosten Schätzungen.

Umgebung

Sitzung SET-OptionenDie ANSI_NULLS -Einstellung beeinflusst, ob die "NULL = NULL" Ausdruck als True ausgewertet wird. Kardinalität-Schätzung für äußere Verknüpfungen kann je nach der aktuellen Einstellung ändern. Darüber hinaus können mehrdeutige Ausdrücke auch ändern. Angenommen, die "Col = NULL"-Ausdruck unterschiedlich je nach der Einstellung. Allerdings die "Col IS NULL" Ausdruck ergibt immer die gleiche Weise.
Hardware-RessourcenDie Kosten für die Sortierung und Hash Operatoren hängt von der relative Anteil des Speichers, der SQL Server zur Verfügung steht. Z. B. ist die Datenmenge größer ist als der Cache, die Abfrageoptimierer erkennt, dass die Daten stets in die Warteschlange gestellt werden müssen auf der Festplatte. Ist die Größe der Daten viel kleiner als der Cache ist der Vorgang wahrscheinlich im Arbeitsspeicher ausgeführt werden. Darüber hinaus berücksichtigt SQL Server verschiedene Optimierungen, wenn der Server über mehr als einen Prozessor verfügt und Parallelität mit einen Hinweis "MAXDOP" oder die Option max Degree of Parallelism -Konfigurationsoption nicht deaktiviert wurde.
Clone-db

Warnung: Dieser Artikel wurde automatisch übersetzt.

Eigenschaften

Artikelnummer: 914288 – Letzte Überarbeitung: 01/27/2015 20:55:00 – Revision: 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 KbMtde
Feedback