Bitte helfen Sie, da dieses Problem mich verrückt macht ...
Tempdb
hat vier Datendateien und eine Protokolldatei. Sie befinden sich alle auf demselben dedizierten Laufwerk.
Wenn ich tempdb
in SQL Server Management Studio (SSMS) mit der rechten Maustaste auf klicke, um Eigenschaften -> Allgemein anzuzeigen, wird "Größe" als ~ 65000 MB und "Speicherplatz verfügbar" als ~ 64000 MB angezeigt. Wenn ich jedoch versuche, die Dateien über die GUI zu verkleinern, sehe ich, dass sich der "aktuell zugewiesene Speicherplatz" nicht geändert hat und immer noch die ursprüngliche Größe anzeigt.
Hier wird auch der "Verfügbare freie Speicherplatz" als negative Zahl angezeigt. Die einzige Problemumgehung, die ich bisher gefunden habe, besteht darin, SQL Server neu zu starten, um das System zu leeren tempdb
, aber ich kann dies nicht weiter tun.
Hat jemand jemals darauf gestoßen und kennt die Grundursache / dauerhafte Lösung dafür bitte?
quelle
Antworten:
Open Query Analyzer Run
DBCC UPDATEUSAGE('tempdb')
Nachdem dies erledigt ist, überprüfen Sie den Temdb-Wert und es sollten die wahren Werte angezeigt werden.Auch dies könnte Ihnen helfen.
Überprüfen Sie auch, ob offene Transaktionen mit dbcc opentran oder sp_whoisactive (SP von Adam Mechanic) offen sind.
Das war ein Fehler in SQL Server 2008 SP1 beschrieben hier .
Verursacht es aus Neugier Leistungsprobleme?
quelle
tempdb
Dateien verkleinert habe . Der Versuch, in diesem Zustand zu schrumpfen, hat die Instanz tatsächlich eingefroren. Ich denke, das Sicherste ist, die Instanz zu einem geeigneten Zeitpunkt neu zu starten. Das Problem ist seitdem nicht mehr aufgetreten, und ich werde nicht anfangen, an Produkten herumzuspielen, die versuchen, es zu reproduzieren.Microsoft SQL Server 2008 (SP3) - 10.0.5500.0 (X64) Sep 21 2011 22:45:45 Copyright (c) 1988-2008 Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
und für tempdb weiterhin negativer freier Speicherplatz angezeigt wird.Nun, Sie müssen Ihre Tempdb-Einstellungen überprüfen und die Verwendung durch Ihren Server überprüfen. Microsoft gibt die wichtigsten Hinweise zum Verwalten der Tempdb und zum Optimieren ihrer Leistung (siehe http://msdn.microsoft.com/en-us/library/ms175527(v=sql.105).aspx ). Versuchen Sie, sie anzuwenden und sehen Sie das Ergebnis (in meinem Fall hat es geholfen, meine 17-GB-Datenbank auf 4 GB zu optimieren).
Sie können auch die temporäre Datenbank sp_spaceused proc it verwenden. Hier erfahren Sie, welche Tabelle den größten Teil des Speicherplatzes in der Datendatei belegt. Sie können Profiler auch verwenden, um das automatische Wachstum der Datei und das automatische Wachstum der Protokolldatei zu erkennen. Wenn es sich häufig ändert, nimmt tempDb automatisch zusätzlichen Speicherplatz in Anspruch, und Sie müssten wahrscheinlich die Logik für die Verwendung Ihrer # tmp-Tabellen ändern.
Wenn Sie die Tempdb auf einem funktionierenden Server verkleinern, kann dies zu Problemen mit den Abfragen in den anderen Datenbanken führen (nur im Einzelmodus).
quelle
Sie können einfach die Anfangsgröße der Dateien ändern und die Datei danach entsprechend verkleinern. Das Problem ist, dass die aktualisierte Größe sich nicht in der Dateigröße widerspiegelt und daher der verfügbare Speicherplatz negativ ist. Hoffe das hilft.
quelle