Verkleinern der Datenbank "tempdb" in SQL Server

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

Auf dieser Seite

Zusammenfassung

Im vorliegenden Artikel werden drei Methoden erläutert, wie Sie die Datenbank "tempdb" in Microsoft SQL Server verkleinern können. Bevor Sie die Datenbank "tempdb" mit den in diesem Artikel beschriebenen Methoden verkleinern, berücksichtigen Sie Folgendes:
  • Nach jedem Neustart wird die Größe der Datenbank "tempdb" auf die zuletzt konfigurierte Größe (d. h. die Standardgröße oder die Größe, die zuletzt mit dem Befehl alter database festgelegt wurde. Sofern Sie keine anderen Werte verwenden oder sich sofort Freiraum verschaffen müssen, ist es nicht erforderlich, eines der in diesem dokumentierten Verfahren zu verwenden. Sie können warten, bis die Größe beim nächsten Neustart des SQL Server-Dienstes verringert wird. Die Größe der Datenbank "tempdb" wird sich nicht negativ auf die Leistung von SQL Server aus.
  • In SQL Server 2005 und höheren Versionen unterscheidet sich das Verkleinern der Datenbank "tempdb" nicht vom Verkleinern einer Benutzerdatenbank, abgesehen von der Tatsache, dass die Datenbank "tempdb" nach jedem Neustart der SQL Server-Instanz auf die konfigurierte Größe zurückgesetzt wird.
  • Der Befehl shrink kann gefahrlos in "tempdb" ausgeführt werden, während "tempdb" in Verwendung ist. Allerdings können andere Fehler, z. B. Blockaden, Deadlocks usw., auftreten, die den Abschluss des Befehls shrink verhindern. Um die erfolgreiche Verkleinerung der Datenbank "tempdb" sicherzustellen, wird daher empfohlen, den Befehl auszuführen, wenn sich der Server im Einzelbenutzermodus befindet bzw. wenn Datenbank "tempdb" nicht verwendet wird.

Informationen zur Datenbank "tempdb"

Die Datenbank "tempdb" ist ein temporärer Arbeitsbereich. SQL Server verwendet "empdb" für viele Aufgaben. Hierzu gehören folgende Aufgaben:
  • Speicherung explizit erstellter temporärer Tabellen
  • Arbeitstabellen mit Zwischenergebnissen, die während der Verarbeitung von Abfragen und Sortiervorgängen erstellt werden
  • Materialisierte statische Cursor.
  • Speicherung von Versionsdatensätzen, wenn Snapshotisolationsstufen oder auf das Lesen beschränkten Snapshotisolationsstufen verwendet werden
SQL Server speichert nur so viele Informationen im tempdb-Transaktionsprotokoll, dass zwar ein Rollback einer Transaktion möglich ist, Transaktionen während der Wiederherstellung einer Datenbank jedoch nicht rückgängig gemacht werden können. Dadurch wird die Ausführungsgeschwindigkeit von INSERT-Anweisungen in "tempdb" gesteigert. Außerdem müssen Sie keine Informationen protokollieren, um Transaktionen rückgängig zu machen, weil "tempdb" bei jedem Neustart von SQL Server neu erstellt wird. Daher gibt es keine Transaktionen für einen Rollforward oder Rollback. Beim Starten von SQL Server wird "tempdb" unter Verwendung einer Kopie der model-Datenbank wiederhergestellt und auf die zuletzt konfigurierte Größe zurückgesetzt. Die konfigurierte Größe ist die zuletzt explizit durch eine Anweisung zur Änderung der Dateigröße, wie ALTER DATABASE mit der Option MODIFY FILE oder DBCC SHRINKFILE, festgelegte Größe.

Standardmäßig ist die Datenbank "tempdb" so konfiguriert, dass sie bei Bedarf automatisch wachsen kann. Daher kann die Datenbank im Lauf der Zeit zu einer Größe anwachsen, die größer als erwünscht ist. Durch einen einfachen Neustart von SQL Server wird die Größe der Datenbank "tempdb" auf die zuletzt konfigurierte Größe zurückgesetzt.

In SQL Server 2005 und höheren Versionen können Sie eine der folgenden Methoden zum Ändern der Größe der Datenbank "tempdb" verwenden.

Tabelle minimierenTabelle vergrößern
MethodeNeustart erforderlich?Weitere Informationen
ALTER DATABASEJaBietet vollständige Kontrolle für die Größe des "tempdb"-Standarddateien ("tempdev" und "templog").
DBCC SHRINKDATABASENeinArbeitet auf Datenbankebene
DBCC SHRINKFILENeinErmöglicht das Verkleinern einzelner Dateien.
SQL Server Management StudioNeinDies ist im Grunde eine Methode, Datenbankdateien über die grafische Benutzeroberfläche zu verkleinern.

Hinweis SQL Server Management Studio In SQL Server 2005 zeigt nach dem Verkleinern nicht die richtige Größe der tempdb-Dateien an. Der Wert von "Aktuell zugeordneter Speicherplatz" wird immer aus sys.master_files DMV abgerufen, und dieser Wert wird nach dem Verkleinern der Datenbank "tempdb" nicht aktualisiert. Um nach dem Verkleinern die richtige Größe der Datenbank "tempdb" zu ermitteln, führen Sie die folgende Anweisung in SQL Server Management Studio aus:

use tempdb

select (size*8) as FileSizeKB from sys.database_files
Die ersten drei Methoden werden hier besprochen.

Hinweis In SQL Server 2000-Installationen müssen Sie Query Analyzer statt SQL Server Management Studio verwenden. Zudem erfordern die DBCC-Befehle, dass Sie die Datenbank in den Einzelbenutzermodus versetzen.

Sie können die folgenden drei Methoden verwenden, um die Datenbank ""tempdb" auf eine Größe zu verkleinern, die unter der konfigurierten Größe liegt.

Methode 1: Verwenden von Transact-SQL-Befehlen

Methode 2: Verwenden des Befehls DBCC SHRINKDATABASE

Methode 3: Verwenden des Befehls DBCC SHRINKFILE

Fehler 2501 und 8909 beim Ausführen von Verkleinerungsvorgängen

Wenn die Datenbank "tempdb" verwendet wird und Sie sie mit dem Befehl DBCC SHRINKDATABASE oder DBCC SHRINKFILE zu verkleinern versuchen, können Meldungen angezeigt werden, die je nach der verwendeten Version von SQL Server einer der folgenden Meldungen ähneln:

SQL Server 2005 und höhere Versionen

Server: Meldung 8909, Ebene 16, Status 1, Zeile 1 Tabellenfehler: Objekt-ID 0, Index ID -1, Partition ID 0, Zuordnungseinheits-ID 0 (Typ Unbekannt), Seiten-ID (6:8040) enthält eine falsche Seiten-ID im Seitenheader. Seiten-ID im Seitenheader = (0:0).

SQL Server 2000

Server: Msg 2501, Ebene 16, Status 1, Zeile 1 Tabelle '1525580473' konnte nicht gefunden werden. Überprüfen Sie sysobjects.
Server: Msg 8909, Ebene 16, Status 1, Zeile 0 Tabelle beschädigt: Objekt-ID 1, Index ID 0, Seiten-ID %S_PGID. Seiten-ID im Seitenheader = %S_PGID.
Hinweise
  • Diese Fehler zeigen keine tatsächliche Beschädigung der Datenbank "tempdb" an. Beachten Sie jedoch, dass es andere Gründe für Fehlermeldungen zu physischen Beschädigungen von Daten wie Fehler 8909 geben kann. Zu diesen Gründen zählen beispielsweise Probleme in Bezug auf das E/A-Subsystem. Tritt der Fehler außerhalb von Verkleinerungsvorgängen auf, sollten Sie ihn näher untersuchen.
  • In SQL Server 2005 und höheren Versionen wird zwar die Meldung 8909 an die Anwendung bzw. den Benutzer, der den Verkleinerungsvorgang ausführt, ausgegeben, aber der Verkleinerungsvorgang schlägt nicht fehl.
  • In SQL Server 2000 und früheren Versionen bewirken diese Fehler, dass der Verkleinerungsvorgang fehlschlägt. Um die Datenbank "tempdb" zu verkleinern, müssen Sie daher SQL Server neu starten, damit "tempdb" neu erstellt wird. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
    277848 Fehlermeldung "Tabelle beschädigt Objekt-ID 0, Index-ID 0, Seiten-ID" tritt auf, wenn der Befehl DBCC DBREINDEX in SQL Server ausgeführt wird


Informationsquellen

Verkleinern einer Datenbank

Eigenschaften

Artikel-ID: 307487 - Geändert am: Freitag, 15. August 2014 - Version: 7.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 64-Bit Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Parallel Data Warehouse
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Web
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Web
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2012 Enterprise
  • Microsoft SQL Server 2012 Parallel Data Warehouse
  • Microsoft SQL Server 2012 Standard
  • Microsoft SQL Server 2012 Web
Keywords: 
kbsqlsetup kbhowtomaster KB307487
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