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

Verkleinern die Datenbank Tempdb in SQL Server

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: 307487
Zusammenfassung
Dieser Artikel beschreibt verschiedene Methoden zum Verkleinern der Datenbank Tempdb in Microsoft SQL Server. Bevor Sie die Datenbank Tempdb verkleinern mithilfe der in diesem Artikel beschriebenen Methoden, beachten Sie Folgendes:
  • Die Größe von Tempdb wird nach jedem Neustart auf die zuletzt konfigurierte Größe zurückgesetzt (d. h. die Standardgröße oder die letzte Größe, die mit alter Datenbankfestgelegt wurde). Daher müssen Sie keines der in diesem Artikel beschriebenen Verfahren verwenden, es sei denn, Sie müssen unterschiedliche Werte verwenden oder sofort eine Nachfrist erhalten. Sie können beim nächsten Neustart des SQL Server-Dienst für die Größe verringert warten. Tempdb-Datenbank größer werden die Leistung von SQL Server nicht beeinträchtigen.
  • In SQL Server 2005 und höher Verkleinern der Datenbank Tempdb unterscheidet nicht Verkleinern einer Benutzerdatenbank außer der Tatsache, dass Tempdb setzt die konfigurierte Größe nach jedem Neustart der Instanz von SQL Server.
  • Gefahrlos Tempdb laufenden ist in Tempdb führen zu verkleinern . Allerdings können andere Fehler wie Sperren, Deadlocks, usw., die verkleinert vollständig verhindern können auftreten. Daher empfiehlt um sicherzustellen, dass verkleinern Tempdb gelingt, Sie dazu während der Server im Einzelbenutzermodus oder alle Tempdb Aktivität beendet haben.

Tempdb-Informationen

Die Tempdb-Datenbank ist ein temporärer Arbeitsbereich. SQL Server verwendet die Tempdb Aufgaben ausführen. Diese Aufgaben gehören die folgenden:
  • Speicherung explizit erstellter temporärer Tabellen
  • Arbeitstabellen mit Zwischenergebnissen, die während der Verarbeitung von Abfragen und Sortierung erstellt werden
  • Materialisierte statische Cursor
  • Speicherung der Versionsdatensätze bei Snapshot-Isolationsstufen oder Read committed Snapshot-Isolationsstufen
SQL Server zeichnet nur Informationen im Tempdb-Transaktionsprotokoll Rollback eine Transaktion, nicht jedoch Transaktionen während der Wiederherstellung rückgängig zu machen. Dieses Feature erhöht die Leistung von Anweisungen in Tempdb Einfügen . Darüber hinaus müssen Sie keinen Informationen um Transaktionen rückgängig zu machen, da Tempdb bei jedem neu erstellt wird, dass Sie SQL Server neu starten. Daher hat keine Transaktionen ein Rollforward oder Rollback. Wenn SQL Server gestartet wird, Tempdb wird mithilfe einer Kopie der Model-Datenbank neu erstellt, und Tempdb auf die zuletzt konfigurierte Größe zurückgesetzt. Die konfigurierte Größe ist die zuletzt explizit Größe, die mit einer Dateigröße ändern wie ALTER DATABASE , der Option MODIFY FILE oder die Anweisung DBCC SHRINKFILE oder DBCC SHRINKDATABASE verwendet, festgelegt wurde.

Standardmäßig wird die Tempdb-Datenbank Bedarf für die automatische Vergrößerung konfiguriert. Daher kann diese Datenbank unerwartet rechtzeitig auf eine Größe größer als die gewünschte Größe anwachsen. Ein einfacher Neustart von SQL Server zurückgesetzt die Größe von Tempdb auf die zuletzt konfigurierte Größe.

In SQL Server 2005 oder höher können eine der folgenden Methoden Sie um die Größe von Tempdb zu ändern.

-MethodeErforderlich Neustart?Weitere Informationen
ALTER DATABASEJaBietet vollständige Kontrolle für die Größe der Tempdb Standarddateien (Tempdev und Templog).
DBCC SHRINKDATABASENeinArbeitet auf Datenbankebene.
DBCC SHRINKFILENeinKönnen Sie einzelne Dateien verkleinern.
SQL Server Management StudioNeinDies ist grundsätzlich eine Möglichkeit, Dateien über die GUI zu verkleinern.

Hinweis SQL Server Management Studio in SQL Server 2005 zeigt nicht die richtige Größe der Tempdb-Dateien nach einer Verkleinerung. Der Wert "Aktuell zugeordneter Speicherplatz" immer aus master_files DMV abgerufen und dieser Wert wird nicht aktualisiert, nachdem eine Verkleinerung der Tempdb-Datenbank ausgeführt wird. Um die richtige Größe der Tempdb-Dateien nach ein Verkleinerungsvorgang finden, führen Sie folgende Anweisung in SQL Server Management Studio:

use tempdbgoselect (size*8) as FileSizeKB from sys.database_files
Die ersten drei Methoden werden hier erläutert.

Hinweis SQL Server 2000-Installationen müssen Sie mit Query Analyzer statt SQL Server Management Studio. Außerdem benötigen die DBCC-Befehle Sie die Datenbank in den Einzelbenutzermodus versetzt.

Die folgenden drei Methoden können Sie Tempdb verkleinern, die kleiner ist als die konfigurierte Größe.

Methode 1: Verwenden von Transact-SQL-Befehle
Hinweis Diese Methode müssen Sie SQL Server neu starten.
  1. Beenden Sie SQL Server.
  2. Befehlszeile starten Sie die Instanz im minimalen Konfigurationsmodus. Gehen Sie hierzu folgendermaßen vor:
    1. Ändern Sie eine Befehlszeile im folgenden Ordner:
    2. Wenn die Instanz eine benannte Instanz von SQL Server, führen Sie den folgenden Befehl ein:
      sqlservr.exe -s InstanceName - C -f
      Wenn die Instanz die Standardinstanz von SQL Server ist, führen Sie den folgenden Befehl ein:
      Sqlservr - C -f
      Hinweis
      C und f - Parameter können SQL Server im Minimalkonfigurationsmodus starten, die eine Tempdb Größe von 1 MB für die Datendatei und 0,5 MB für die Protokolldatei.
  3. Herstellen einer Verbindung mit SQL Server mit Query Analyzer, und führen Sie die folgenden Transact-SQL-Befehle:
       ALTER DATABASE tempdb MODIFY FILE   (NAME = 'tempdev', SIZE = target_size_in_MB)    --Desired target size for the data file   ALTER DATABASE tempdb MODIFY FILE   (NAME = 'templog', SIZE = target_size_in_MB)   --Desired target size for the log file					
  4. Beenden Sie SQL Server. Dazu drücken Sie STRG + C im Eingabeaufforderungsfenster starten Sie SQL Server als Dienst neu und überprüfen Sie die Größe der Tempdb.mdf und Templog.ldf.
Eine Einschränkung dieser Methode ist, dass es nur Standard Tempdb logischen Dateien Tempdev und Templog verarbeitet. Wenn Tempdb Weitere Dateien hinzugefügt werden, können Sie diese verkleinern, nachdem Sie SQL Server als Dienst neu starten. Tempdb-Dateien werden beim Start neu erstellt. Allerdings sind leer und können entfernt werden. Um weitere Dateien in Tempdb mithilfe des ALTER DATABASE -Befehls die Option Entfernen .

Methode 2: Verwenden Sie den Befehl DBCC SHRINKDATABASE
Verwenden Sie den Befehl DBCC SHRINKDATABASE verkleinern die Datenbank Tempdb. DBCC SHRINKDATABASE erhält der Parameter Target_percent. Dies ist der gewünschte Prozentsatz an freiem Speicher in der Datenbank nach verkleinert wurde. Wenn Sie DBCC SHRINKDATABASEverwenden, müssen Sie SQL Server neu starten.
  1. Bestimmen Sie den Speicherplatz derzeit in Tempdb mithilfe der Prozedur Sp_spaceused gespeichert. Berechnen Sie den Prozentsatz des freien Speicherplatzes für die Verwendung als Parameter DBCC SHRINKDATABASEüberlassen. Diese Berechnung basiert auf der gewünschten Datenbankgröße.

    Hinweis In einigen Fällen müssen Sie möglicherweise ausführen Sp_spaceused @updateusage = True Bereich neu berechnen, die verwendet wird, und einen aktualisierten Bericht zu erhalten. SQL Server-Onlinedokumentation finden Sie weitere Informationen zu der Prozedur Sp_spaceused gespeichert.

    Beispiel:
    Angenommen, Tempdb enthält zwei Dateien: die primäre Datendatei (Tempdb.mdf), die 100 MB und die Protokolldatei (Tempdb.ldf), die 30 MB. Angenommen Sie, dass Sp_spaceused meldet, dass die primäre Datendatei 60 MB Daten enthält. Außerdem Angenommen Sie, dass Sie die primäre Datendatei auf 80 MB verkleinern möchten. Berechnen Sie den gewünschten Prozentsatz an freiem Speicher nach der Verkleinerung: 80 MB-60 MB = 20 MB. Dividieren Sie jetzt 20 MB durch 80 MB = 25 %, ist dieTarget_percent. Die Transaktionsprotokolldatei wird entsprechend verkleinert, wenn 25 % oder 20 MB freier Speicher nach der Verkleinerung der Datenbank.
  2. Herstellen einer Verbindung mit SQL Server mit Query Analyzer, und führen Sie die folgenden Transact-SQL-Befehle:
       dbcc shrinkdatabase (tempdb, 'target percent')    -- This command shrinks the tempdb database					
Gibt es Nachteile für die Verwendung des Befehls DBCC SHRINKDATABASE die Tempdb-Datenbank. Die Zielgröße für Daten-und Protokolldateien kann nicht kleiner als die Größe angegeben als die Datenbank erstellt oder kleiner als die letzte, die mit einer Datei Größe ändern wie ALTER DATABASE , der Option MODIFY FILE oder den Befehl verwendet, explizit festgelegt wurde. Eine weitere Einschränkung von BCC SHRINKDATABASE ist die Berechnung des Parameters Target_percentage und ihre Abhängigkeit von den aktuellen Speicherplatz verwendet wird.

Methode 3: Verwenden Sie den Befehl DBCC SHRINKFILE
Verwenden Sie den Befehl DBCC SHRINKFILE zum Verkleinern einzelner Tempdb-Dateien. DBCC SHRINKFILE bietet mehr Flexibilität als DBCC SHRINKDATABASE , da Sie auf einer Datenbankdatei Hiermit können ohne andere Dateien, die zu derselben Datenbank gehören. DBCC SHRINKFILE erhält den Zielgröße Parameter. Dies ist die gewünschte Endgröße der Datenbankdatei.
  1. Bestimmen Sie die gewünschte Größe für die primäre Datendatei (tempdb.mdf), die Protokolldatei (templog.ldf) und zusätzliche Dateien, die Tempdb hinzugefügt werden. Stellen Sie sicher, dass in den Dateien belegte Speicherplatz kleiner oder gleich der gewünschten Größe.
  2. Herstellen einer Verbindung mit SQL Server mit Query Analyzer, und führen Sie dann die folgenden Transact-SQL-Befehle für die bestimmten Dateien, die Sie verkleinern möchten:
       use tempdb   go   dbcc shrinkfile (tempdev, 'target size in MB')   go   -- this command shrinks the primary data file   dbcc shrinkfile (templog, 'target size in MB')   go   -- this command shrinks the log file, examine the last paragraph.						
Ein Vorteil des Befehls DBCC SHRINKFILE ist, dass sie eine Datei auf eine Größe verkleinern kann, der kleiner als die ursprüngliche Größe. Sie können DBCC SHRINKFILE auf Daten- oder Protokolldateien Dateien ausgeben. Eine Einschränkung von DBCC SHRINKFILE ist, dass Sie die Datenbank nicht kleiner als die Größe der Model-Datenbank herstellen können.

Verwenden Sie den Befehl DBCC SHRINKFILE zum Verkleinern einzelner Tempdb-Dateien. DBCC SHRINKFILE bietet mehr Flexibilität als DBCC SHRINKDATABASE , da Sie auf einer Datenbankdatei Hiermit können ohne andere Dateien, die zu derselben Datenbank gehören. DBCC SHRINKFILE erhält den Zielgröße Parameter. Dies ist die gewünschte Endgröße der Datenbankdatei.


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

Wenn Tempdb verwendet wird und Sie versuchen, mithilfe des Befehls DBCC SHRINKDATABASE oder DBCC SHRINKFILE verkleinert, erhalten Sie Nachrichten, die je nach der Version von SQL Server ähneln, die Sie verwenden:

SQL Server 2005 und höher

Server: Msg 8909, Ebene 16, Status 1, Zeile 1 Tabellenfehler: Objekt-ID 0, Index-ID 1, ID 0, Alloc Unit ID 0 (Typ unbekannt) partitionieren, Seiten-ID (6:8040) enthält eine falsche Seiten-ID in der Kopfzeile. Die Seiten-ID im Seitenheader = (0:0).

SQL Server 2000

Server: Msg 2501, Ebene 16, Status 1, Zeile 1 konnte nicht Tabelle ' 1525580473 '. Überprüfen Sie Sysobjects.
Server: Msg 8909, Ebene 16, Status 1, Zeile 0 Tabelle beschädigt: Objekt-ID 1, Indexid 0, Seite-ID % S_PGID. Die Seiten-ID im Seitenheader = % S_PGID.
Hinweise
  • Diese Fehler tatsächliche Beschädigung in Tempdb nicht an. Bedenken Sie jedoch möglicherweise Fehler Fehler 8909 physischen Daten aus anderen Gründen, die dieser Gründe e/a-Subsystem zu berücksichtigen. Daher tritt der Fehler außerhalb Verkleinerungsvorgängen tun weitere Untersuchung.
  • In SQL Server 2005 und höheren Versionen zwar ein 8909 gemeldet wird, an die Anwendung oder den Benutzer, den Verkleinerungsvorgang ausgeführt wird, fehl die Verkleinerungsvorgängen nicht.
  • In SQL Server 2000 und früheren Versionen verursacht diese Fehler verkleinern ordnungsgemäß funktionieren. Daher zum Verkleinern der Tempdb-Datenbank müssen Sie SQL Server, Tempdb erneut starten. Klicken Sie für weitere Informationen auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
    277848 Fehler Meldung "Tabelle beschädigte Objekt-ID 0, Indexid 0, Seiten-ID" tritt beim Ausführen von DBCC DBREINDEX in SQL Server


Informationsquellen
Verkleinern einer Datenbank

Warnung: Dieser Artikel wurde automatisch übersetzt.

Eigenschaften

Artikelnummer: 307487 – Letzte Überarbeitung: 07/03/2016 07:50:00 – Revision: 9.0

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 Standard, Microsoft SQL Server 2012 Web, Microsoft SQL Server 2014 Business Intelligence, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Enterprise Core, Microsoft SQL Server 2014 Express, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Web, Microsoft SQL Server 2016 Developer, Microsoft SQL Server 2016 Enterprise, Microsoft SQL Server 2016 Enterprise Core, Microsoft SQL Server 2016 Standard

  • kbsqlsetup kbhowtomaster kbmt KB307487 KbMtde
Feedback
html>html>t=">