2013-06-11 15 views
7

Wir verwenden SQL Server 2008 Express. Momentan haben wir in der Verbindungszeichenfolge die Standard-Poolgröße von 100. Zu Spitzenzeiten erhalten wir einen Timeout-Fehler, wenn Transaktionen in die Datenbank verarbeitet werden.Max. Poolgröße der Verbindung in SQL Server 2008

Die Situation hat sich verbessert, seit wir die Poolgröße auf 200 eingestellt haben. Meine Frage ist, wie hoch die maximale Poolgröße in Express Edition sein darf. Diese Edition wird mit einer GB RAM ausgeführt.

Auch wir haben die Vollversion von SQL. Können wir eine größere Poolgröße mit der vollständigen Version angeben und wenn wir die Poolgröße erhöhen, müssten wir Dinge wie RAM usw. erhöhen, um den Nutzen zu sehen?

Vielen Dank im Voraus,

Matt.

Antwort

9

Wann immer Sie solche Fragen haben, sollten Sie zu Maximum Capacity Specifications for SQL Server gehen. Streng genommen ist die Größe des Verbindungspools eine Client-Einstellung, aber die Engine muss eine Verbindung offen halten, damit Sie die Grenzen des Servers erreichen können. Die Connections per client Werte Maximum value of configured connections die durch eine Server Configuration Option ist konfigurierbar bedeutet und ideed es ist, siehe user connections:

Die Benutzerverbindungen Option gibt die maximale Anzahl von gleichzeitige Benutzerverbindungen, die auf eine Instanz von SQL Server erlaubt sind. Die tatsächliche Anzahl der zulässigen Benutzerverbindungen hängt auch von der Version von SQL Server, die Sie verwenden, und auch die Grenzen der Ihre Anwendung oder Anwendungen und Hardware. SQL Server ermöglicht maximal 32.767 Benutzerverbindungen. Da Benutzerverbindungen eine dynamische (selbstkonfigurierende) Option sind, passt SQL Server die maximale Anzahl der Benutzerverbindungen automatisch nach Bedarf an, bis zum maximal zulässigen Wert von .

+0

ADO.NET verwendet eine Optimierungstechnik, die als Verbindungspooling bezeichnet wird. http://msdn.microsoft.com/en-us/library/8xx3tyca(v=vs.110).aspx Die maximale Poolgröße wäre also eine Einstellung, die in Ihrer Verbindungszeichenfolge angegeben ist, die von ADO.NET beim SQL verwendet werden soll Server 'user connections' Einstellung ist 0, unbegrenzte Benutzerverbindungen sind erlaubt; Ich würde denken, ADO.NET maximale Poolgröße würde durch die Ressourcen in der Maschine begrenzt, die Ihre Anwendung ausgeführt wird. –

+0

@turtleboy Auf der Seite Client/Anwendung wird das Verbindungspooling behandelt. http://blogs.msdn.com/b/sql_pfe_blog/archive/2013/10/08/connection-pooling-for-the-sql-server-dba.aspx Weiß nicht, was Ihre Anwendung oder ihre Datenbank-Verbindungen-Anforderung Ein Grund für die Ausnahme "Timeout abgelaufen" sind Verbindungen, die von Ihrem Programm geöffnet, aber nicht geschlossen werden. In diesem Fall hilft es nicht, den Verbindungs-Timeout (Standard 15 Sekunden) in der Verbindungszeichenfolge zu erhöhen. Sehen Sie sich die 'NumberOfPooledConnections' im Systemmonitor an (Drücken Sie Windows/Ausführen, klicken Sie auf OK) –

+0

@turtleboy Ich nehme an, dass Sie ADO.NET Sql Server Provider verwenden, wenn dies der Fall ist: ADO.NET Connection Pooling auf einen Blick http://www.codeproject.com/Articles/17768/ADO-NET-Connection-Pooling-at-a-Glance –