Möglicherweise nicht genügend virtueller Speicher Wenn Sie eine große Anzahl von Datenbanken in SQL Server haben

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

Problembeschreibung

Möglicherweise nicht genügend verfügbaren virtuellen Adressraum im Microsoft SQL Server-Prozess Wenn alle der folgenden Bedingungen erfüllt sind, wenn Sie SQL Server mit dem Standard-Konfigurationswerte ausgeführt werden:
  • Der Server ist mindestens 2 GB RAM.
  • Es gibt eine große Anzahl Datenbanken auf dem System (z. B. mehr als 500).
  • Die meisten der Datenbanken werden aktualisiert (z. B., die Datenbanken nicht haben den Status "schreibgeschützt").
  • Es gibt genügend gleichzeitig aktiven Benutzerverbindungen zu die meisten der 255 Arbeitsthreads von SQL Server verwenden.
SQL Server kann die folgenden Fehlermeldungen verursachen, nachdem insgesamt 2 GB virtuellen Adressraum aufgebraucht wird (oder nach dem ganzen 3 GB virtuellen Adressraum für SQL Server Enterprise Edition mit, bis verwendet wird die / 3GB wechseln Sie in der Datei "Boot.ini").

Nachricht 1

Fehler: 17802, Schweregrad: 18, Status: 3
Server-Ereignis Thread konnte nicht erstellt werden.

Nachricht 2

SQL Server konnte die Process_loginread Thread nicht erzeugen.

Meldung 3

Warnung: Wenn Procedure Cache, zusammenhängenden Speicher freizugeben.

Puffer Verteilung: Gestohlen = 3454 frei = 2540 Prozeduren = 138
Inram = 0 = fehlerhaft 1108 gehalten = 35
I / O = 0, verriegelt = 0, andere = 214821
Zugesicherte Puffer Zähler: = 222096 Ziel = 222096 gehashte = 215964
InternalReservation = 547 ExternalReservation = 0 Min frei = 512
Prozedur-Cache: TotalProcs = 8 TotalPages = 138 InUsePages = 138
Dynamischer Speicher-Manager: gestohlen = 3556
Betriebssystem = 497 Allgemein = 1706
Abfrage-Plan = 755 Leistungsoptimierung = 0
Dienstprogramme = 9 Verbindung = 1583
Globale Speicherobjekte: Resource = 1119 Sperren = 163 XDES = 1 SQLCache = 90 Replikation = 5 LockBytes = 2 ServerGlobal = 20
Abfrage-Speichermanager: gewährt = 0 inaktiv = 0 maximal = 164370 verfügbar = 164370

Ursache

Für jede aktualisierte Datenbank reserviert SQL Server mindestens 64 KB-Block für die Verwendung in Protokolldatensätze formatieren, bevor Sie geschrieben werden auf der Festplatte. Diese Reservierung erfolgt beim erste Protokolleintrag für die Datenbank generiert z. B. während einer INSERT-, Update- oder DELETE-Anweisung ist. Abhängig von der Aktivität und die Größe der generierten Protokolldatensätze möglicherweise nachfolgende Änderungen die Zuweisung von zusätzliche 64 KB-Speicherzuordnungen ausgelöst. SQL Server 7.0 wird nicht mehr als drei 54-KB-Blöcke reserviert werden. In SQL Server 2000, die oberen Anzahl der Zuordnungen für jede Datenbank eine Funktion von der Anzahl der Prozessoren ist, dass SQL Server mit konfiguriert.

Abhilfe

Verwenden der -g Startparameter zusätzliche, nicht reservierten virtuellen Arbeitsspeicher für diese Zuordnungen Datenbank lassen. Die -g Parameter wird dokumentiert, in der Readme.txt der SQLServer 7.0 Service Pack und in SQL Server 2000-Onlinedokumentation. Die "Weitere Informationen" Abschnitt in diesem Artikel die Einstellungen enthält, die Microsoft empfiehlt, die Sie verwenden, um den entsprechenden Wert für diese ermitteln festlegen.

Weitere Informationen

Auf einem Computer mit 2 GB oder mehr RAM, reserviert SQL Server, die alle jedoch 256 MB (SQL Server 7.0) oder 384 MB (SQL Server 2000) virtuellen Adressraum während des Startvorgangs für die Verwendung durch den Pufferpool. Darüber hinaus verwendet SQL Server zum Speichern des Daten und Prozedur-Caches, der Puffer-Poolspeicher bedienen, die meisten anderen Speicheranforderungen von SQL Server-Prozesse, die kleiner als 8 KB. Der verbleibende nicht reservierte Speicher ist für die Verwendung mit anderen Zuweisungen vorgesehen, die aus dem Pufferpool bedient werden kann nicht. Diese Zuordnungen enthalten, sind aber nicht beschränkt auf:
  • Stacks und der zugeordnete Thread Umgebungsblock für alle Threads, die SQL Server erstellt. Nachdem SQL Server alle 255 Arbeitsthreads erstellt hat, ist dies ungefähr 140 MB.
  • Zuordnungen, die durch andere DLLs vorgenommen oder verarbeitet, die ausgeführt werden im SQL Server-Adressraum (die von System zu System hängt ab), z. B.:
    • OLE DB-Provider aus allen verknüpften Servern.
    • COM-Objekte, die mithilfe der Sp_OA System geladen werden gespeicherte Prozeduren oder erweiterte gespeicherte Prozeduren.
  • Alle Bilder (.exe oder .dll), die im Adressraum geladen werden häufig 20 bis 25 MB, aber möglicherweise weitere, verwenden Wenn Sie Verbindungsserver Sp_OA oder erweiterte gespeicherte Prozeduren.
  • Die Prozess-Heap und andere Heaps, die SQL Server erstellen können. Während des Startvorgangs ist i. d. r. 10 MB, der aber möglicherweise mehr, wenn Sie Verbindungsserver, Sp_OA oder erweiterte gespeicherte Prozeduren verwenden ist.
  • Zuweisungen von SQL Server-Prozesse, die größer als 8 KB, z. B. für große Abfragepläne erforderlich sind, senden und empfangen Puffer, wenn die Konfigurationsoption network Packet Size von 8 KB und usw. ist. Diese Nummer finden Sie unter Suchen Sie nach der Betriebssystem reservierten Wert in DBCC MEMORYSTATUS gemeldet und, die Anzahl an 8-KB-Seiten gemeldet wird. Typische Werte für diese sind 5 MB.
  • Ein Array, Statusinformationen für jeden Puffer verfolgen, die in den Pufferpool. Dies ist normalerweise ca. 20 MB, wenn SQL Server mit Address Windowing Extensions (AWE) aktiviert, ausgeführt wird, in welchem Fall es deutlich höher sein kann.
Auf Systemen, die eine große Anzahl von Datenbanken haben, können die 64-KB-Zuweisungen, die für Protokoll Formatierung erforderlich sind alle übrigen virtuellen Speicher belegen. Zu diesem Zeitpunkt nachfolgende Zuweisungen fehlschlagen, eine oder mehrere Fehler, die in "Problembeschreibung" aufgelisteten Abschnitt in diesem Artikel.

Mithilfe der -g Startparameter, Sie können SQL Server lassen zusätzlichen virtuellen Speicher zur Verfügung, so, dass die Kombination dieser Zuordnungen protokollbezogene und anderen normalen Zuweisungen nicht außerhalb des virtuellen Adressraums ausgeführt werden anweisen.

Die folgende Tabelle einige empfohlene Ausgangspunkt für die Listen der -g Wert je nach auf die Anzahl der Datenbanken und Server-Version:
Tabelle minimierenTabelle vergrößern
DatenbankenSQLServer 7.0SQLServer 2000
250-g134 NICHT VERFÜGBAR
500-g185 NICHT VERFÜGBAR
750-g237 NICHT VERFÜGBAR
1000-g288 -g288
1250-g340 -g340
1500-g392 -g392
Diese Tabelle wurde berechnet, indem die typischen Werte, die aufgeführt sind, und es ist auch basierend auf der Annahme, die keine Verbindungsserver Aktivität, Sp_OA oder erweiterte gespeicherte Prozeduren verwendet werden. Es basiert ebenfalls auf der Annahme, dass Sie AWE nicht verwenden und die SQL Profiler nicht verwendet wird. Diese Bedingungen müssen eventuell den Wert des -g .

Microsoft empfiehlt, dass schwerwiegende berücksichtigt werden, bevor Sie einen Server mit mehr Datenbanken als ausführen, da der Aufwand, der für die Verwendung dieser Anzahl von Datenbanken auf dem System erforderlich ist sehr viel virtuellen Speicher Weg aus dem Pufferpool dauert die schlechte Leistung für das System als Ganzes führen können.

Viele Datenbanken erstellen hat darüber hinaus die wichtigste Auswirkung auf virtuellen Speicher. Es gibt auch pro-Datenbank-Speicherzuordnungen, die eine Puffer Pool mangelndem Speicher Bedingung verursachen können. Beispielsweise erhalten Sie folgende Fehlermeldung:
Fehler: 701, Schweregrad: 17, Status: 123.
Ist genügend Arbeitsspeicher zum Ausführen dieser Abfrage.
Diese Art von nicht genügend Arbeitsspeicher häufiger in SQL Server 2005 möglicherweise SQL Server 2005 mehr pro-Datenbank-Metadaten als frühere Versionen von SQL Server überwacht.

Wenn Sie die Indexverwendung, Nachverfolgen mithilfe der sys.dm_db_index_usage_stats gespeicherten Prozedur, kann für diesen Vorgang eine beträchtliche Speichermenge müssen. Der Vorgang erfordert eine erhebliche Menge an Arbeitsspeicher, verfügt jede Datenbank viele Indizes.

Eigenschaften

Artikel-ID: 316749 - Geändert am: Mittwoch, 28. Februar 2007 - Version: 11.1
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Standard Edition
Keywords: 
kbmt kberrmsg kbtshoot kbnofix kbprb KB316749 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 316749
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