Freigeben über


Mögliche Ursachen, warum Ereignisse nicht optimiert sind

In diesem Thema werden die häufig auftretenden Gründe aufgeführt, aus denen Ereignisse nicht optimiert sind, und Sie erfahren, wie der Datenbankmodul-Optimierungsratgeber die richtige Datenbank auswählt, für die die Optimierungsereignisse ausgeführt werden sollen.

Häufige Gründe, aus denen Ereignisse nicht optimiert sind

Wenn die Datenbank, für die das Ereignis ursprünglich ausgeführt wurde, richtig angegeben wurde (siehe nachfolgenden Abschnitt), werden die Ereignisse in den folgenden Fällen nicht optimiert:

  • Die Ereignisse verweisen auf Tabellen, die nicht für die Optimierung ausgewählt wurden.
  • Die Ereignisse verweisen auf sehr kleine Tabellen mit weniger als zehn Seiten.
ms179380.note(de-de,SQL.90).gifHinweis:
Die Anzahl der Seiten in einer Tabelle für Microsoft SQL Server 2000 befindet sich in der dpages-Spalte der sysindexes-Systemtabelle. Die Anzahl der Seiten in einer Tabelle für Microsoft SQL Server 2005 befindet sich in der used_page_count-Spalte der sys.dm_db_partition_stats-Katalogsicht.
  • Die Zeit des Datenbankmodul-Optimierungsratgebers reicht nicht aus, um die Anfrage innerhalb der vom Benutzer vorgegebenen Zeit zu optimieren.
  • Die Ereignisse verweisen auf Tabellen, die bereits nahezu die Höchstzahl an Indizes erreicht haben, und die Option zum Beibehalten der vorhandenen Indizes ist aktiviert. In diesem Fall können keine weiteren Indizes für diese Tabellen angelegt werden.
  • Zahlreiche Anweisungen (INSERT, UPDATE und DELETE) der Datenbearbeitungssprache (DML, Data Manipulation Language) werden für die zugrunde liegende Tabelle für das Ereignis ausgeführt. Das Hinzufügen weiterer Indizes oder indizierter Sichten kann sich negativ auf die Leistung dieser zugrunde liegenden Tabellen auswirken.
  • Die folgenden Optimierungsoptionen wurden angegeben:
    • Die maximale Anzahl der Spalten ist beschränkt.
    • Der angegebene Speicherplatz reicht nicht für die Speicherung aus, oder es sind bereits zahlreiche Indizes und indizierte Sichten in der Datenbank vorhanden, und der angegebene Speicherplatz reicht nicht für die Optimierung aus.
      ms179380.note(de-de,SQL.90).gifHinweis:
      Sie können einen Höchstwert für den Speicherplatz für Optimierungsempfehlungen angeben, und zwar im Dialogfeld Erweiterte Optimierungsoptionen in der grafischen Benutzeroberfläche (GUI) des Datenbankmodul-Optimierungsratgebers oder durch Angabe eines Wertes für das Argument -B im Befehlszeilen-Dienstprogramm dta.

Vorgehensweise, mit der der Datenbankmodul-Optimierungsratgeber die richtige Datenbank für Optimierungsereignisse festlegt

Je nach der verwendeten Optimierungs-Arbeitsauslastungsdatei und den Optionen, die Sie beim Optimieren der Arbeitsauslastung angeben, wählt der Datenbankmodul-Optimierungsratgeber wie folgt die richtige Datenbank aus, für die die Optimierungsereignisse ausgeführt werden sollen:

Für SQL-Skript-(.sql)-Optimierungs-Arbeitsauslastungsdateien

  • Wenn Sie den Namen einer Datenbank mit einem der folgenden Verfahren angeben:
    • Argument -d für das Befehlszeilen-Dienstprogramm dta
    • Element DatabaseToConnect in der XML-Eingabedatei
      Diese Optionen bestimmen die Standard-Datenbank, mit der der Datenbankmodul-Optimierungsratgeber eine Verbindung herstellt, sobald eine Optimierungssitzung gestartet wird. Nach dem Herstellen dieser ersten Datenbankverbindung ändert der Datenbankmodul-Optimierungsratgeber den Datenbankkontext für nachfolgende Anweisungen mithilfe der USE database_name-Anweisung im Skript.
  • Falls Sie die anfängliche Datenbankverbindung für eine Optimierungssitzung nicht explizit angeben, verwendet der Datenbankmodul-Optimierungsratgeber die Standard-Datenbank, die für den Anmeldenamen angegeben ist, mit dem Sie sich auf dem Server anmelden, auf dem die Optimierung erfolgen soll. Nach dem Herstellen dieser ersten Datenbankverbindung ändert der Datenbankmodul-Optimierungsratgeber den Datenbankkontext für nachfolgende Anweisungen auf dieselbe Weise wie in dem Fall, wenn Sie die anfängliche Verbindung explizit angegeben hatten. Der Datenbankmodul-Optimierungsratgeber ermittelt den Datenbankkontext mithilfe der USE database_name-Anweisungen.

Für Ablaufverfolgungs-(.trc)-Optimierungs-Arbeitsauslastungsdateien

Wenn Sie Ablaufverfolgungsdateien verwenden, wählt der Datenbankmodul-Optimierungsratgeber die Datenbank, für die die Ereignisse ausgeführt werden sollen, für jede in der Ablaufverfolgung angegebene Serverprozess-ID (SPID) aus. Ist keine SPID in der Ablaufverfolgung angegeben, verwendet der Datenbankmodul-Optimierungsratgeber dieselbe SPID für alle Ereignisse, die in dieser Ablaufverfolgung enthalten sind. Der Datenbankmodul-Optimierungsratgeber wählt die Datenbank für jede SPID wie folgt aus:

  1. DatabaseName ist in der Ablaufverfolgung vorhanden.
    Ist das Feld DatabaseName in der Ablaufverfolgungsdatei vorhanden, ermittelt der Datenbankmodul-Optimierungsratgeber mithilfe dieses Feldes die Datenbank, für die das Ereignis analysiert werden soll. Alle anderen Informationen werden ignoriert. Fehlt das Feld DatabaseName, geht der Datenbankmodul-Optimierungsratgeber zu Schritt 2 über.
  2. DatabaseID ist in der Ablaufverfolgung vorhanden, DatabaseName jedoch nicht.

Ist das Feld DatabaseID in der Ablaufverfolgungsdatei vorhanden, ermittelt der Datenbankmodul-Optimierungsratgeber mithilfe dieses Feldes die Datenbank, für die das Ereignis analysiert werden soll. Das Feld DatabaseID wird dem Datenbanknamen zugeordnet. Der Datenbankmodul-Optimierungsratgeber überprüft allerdings nicht, ob sich die DatabaseID-Felder seit dem Zusammenstellen der Ablaufverfolgung geändert haben. Falls Sie nicht sicher sind, ob die Zuordnung der Felder DatabaseID und DatabaseName auf dem neuesten Stand ist, entfernen Sie das Feld DatabaseID aus der Ablaufverfolgungs-Arbeitsauslastungsdatei. Alle anderen Informationen werden ignoriert. Ist weder das Feld DatabaseName noch das Feld DatabaseID vorhanden, geht der Datenbankmodul-Optimierungsratgeber zu Schritt 3 über.

  1. Weder das Feld DatabaseName noch das Feld DatabaseID sind in der Ablaufverfolgung vorhanden.
    Wenn sowohl das Feld DatabaseName als auch das Feld DatabaseID in der Ablaufverfolgung fehlt, ermittelt der Datenbankmodul-Optimierungsratgeber die Datenbank, für die das Ereignis ausgeführt werden soll, auf dieselbe Weise wie bei SQL-Skript-Optimierungs-Arbeitsauslastungsdateien. Dieser Vorgang ist im vorangegangenen Abschnitt zu den SQL-Skript-(.sql)-Optimierungs-Arbeitsauslastungsdateien beschrieben.

Siehe auch

Konzepte

Ermitteln des Optimierungspotenzials von Ereignissen

Hilfe und Informationen

Informationsquellen für SQL Server 2005