Wir verwenden die SQL-Authentifizierung (um die Anzahl der Verbindungspools zu verringern) und .NET 4.0-Verbindungszeichenfolgen, um eine Verbindung mit SQL Server Enterprise Edition 2012 SP1 auf einem Windows 2008 R2 Enterprise Server herzustellen:
Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64)
19. Oktober 2012, 13:38:57 Uhr
Copyright (c) Microsoft Corporation
Enterprise Edition (64-Bit) unter Windows NT 6.1 (Build 7601: Service Pack 1)
Wir verwenden ungefähr 50 Server, die in 8 verschiedene Gruppen verschiedener Teile einer Website aufgeteilt sind.
Unsere Website verwendet diesen SQL Server, um Besuchsverfolgungsdaten zu protokollieren. In den letzten Tagen wurden die folgenden Meldungen zum Zurücksetzen von Verbindungspools ausgegeben:
Der Client konnte eine Sitzung mit der SPID 1327 nicht wiederverwenden, die für das Verbindungspooling zurückgesetzt wurde. Die Fehler-ID lautet 46. Dieser Fehler wurde möglicherweise durch einen früheren fehlgeschlagenen Vorgang verursacht. Überprüfen Sie die Fehlerprotokolle auf fehlgeschlagene Vorgänge unmittelbar vor dieser Fehlermeldung.
Fehlerprotokoll lautet:
Fehler: 18056, Schweregrad: 20, Status: 46.
Der Client konnte eine Sitzung mit SPID 959, die für das Verbindungspooling zurückgesetzt wurde, nicht wiederverwenden. Die Fehler-ID lautet 46. Dieser Fehler wurde möglicherweise durch einen früheren fehlgeschlagenen Vorgang verursacht. Überprüfen Sie die Fehlerprotokolle auf fehlgeschlagene Vorgänge unmittelbar vor dieser Fehlermeldung.
Anmeldung für Benutzer 'xxxx' fehlgeschlagen. Grund: Fehler beim Öffnen der im Anmeldeobjekt konfigurierten Datenbank 'xxxxxxxx' beim erneuten Validieren der Anmeldung für die Verbindung. [KUNDE: 10.xx.xx.xxx]
Nach einigem Graben fand ich dieses Dokument im CSS-Blog: Funktionsweise: Fehler 18056 - Der Client konnte eine Sitzung mit SPID ## nicht wiederverwenden, die für das Verbindungspooling zurückgesetzt wurde, und diese von Aaron Bertrand: Fehlerbehebung bei Fehler 18456 . Ich weiß, dass die Fehlernummer unterschiedlich ist, aber die Fehler-ID mit einer identischen Anzahl von Nachrichten identisch ist.
Die Fehler-ID 46 weist darauf hin, dass die Anmeldung keine Berechtigungen hatte. Unsere Anmeldungen erfolgen standardmäßig in der master-Datenbank, und der Datenbankname ist in der Verbindungszeichenfolge angegeben.
Ich wollte die Anzahl der Verbindungszeichenfolgenpools usw. überprüfen und habe alle Leistungsindikatoren in Perfmon auf überprüft .Net Data Provider for SqlServer
. Es gab mir nur die Option defaultdomain9675
für die Instanz, daher habe ich die Annahme ausgewählt, dass es sich um einen vom System generierten ID-Namen für unser Datacenter-Netzwerk handelt. Leider lesen alle Zähler Null. Auf einem unserer anderen Hauptserver schweben die Verbindungspools um 10, was ich auf einem gesunden Server mit dieser Art von Last erwartet habe.
Meine Frage ist dreifach
Kann jemand vorschlagen, warum der Windows 2008 R2 Server nicht angezeigt wird
.Net Data Provider for SqlServer
?Hat jemand dies erlebt, da ich offensichtlich glaube, dass das Login, das keine Berechtigungen hat, ein roter Hering ist?
Wenn verschiedene Gruppen von Webservern dieselbe Verbindungszeichenfolgensyntax, jedoch mit geringfügig unterschiedlichen Leerzeichen aufweisen, würde dies dazu führen, dass der Server einen anderen Verbindungspool verwendet?
Die minimalen und maximalen Speichereinstellungen betragen 20 GB bzw. 58 GB. Der Server ist ein dedizierter Datenbankserver mit 64 GB RAM. Ich glaube nicht, dass Speicher das Problem ist, da die Box eine anständige Lebenserwartung zu haben scheint. Das automatische Schließen ist nicht aktiviert. Der Server ist immer in Betrieb: Dies ist eine 24x7-Website mit hoher Auslastung.