Ich habe einen lang laufenden .NET-Prozess (ein Windows-Dienst), der mit einem SQL Server kommuniziert.Soll ich jedes Mal eine brandneue SqlConnection erstellen oder versuchen, eine bestehende Verbindung jedes Mal neu zu öffnen?
Ursprünglich habe ich eine Verbindung geöffnet, als der Dienst gestartet wurde, und es einfach offen gehalten. Gelegentlich würde jedoch ein Netzwerk-Hiccup oder ein Neustart des SQL-Servers diese Verbindung unterbrechen, und mein Prozess würde dies nicht wissen. Es würde versuchen, weiterhin SQL gegen eine geschlossene Verbindung zu werfen.
Der Versuch, eine offene Verbindung aufrechtzuerhalten, war eindeutig, dass ich versuchte, zu schlau zu sein. Also, ich:
- erstellen (und offen) ein neues
SqlConnection
Objekt jedes Mal - die Verbindung erstellen einmal auf Service Start-up, und versuchen, nur um wieder zu öffnen, um die Verbindung jedes Mal
Für letztere (# 2), habe ich diesen Code:
if(connection.State != ConnectionState.Open)
{
connection.Open();
}
ich muss dies nur tun, weil die Verbindung ist bereits vorhanden. Wenn ich die Verbindung jedes Mal frisch erstellt habe (# 1), wäre es eindeutig geschlossen und ich müsste es öffnen.
Was ich hoffe Vorteil von SQL Connection-Pooling zu tun nehmen ist tatsächlich nicht eine neue Verbindung, jedes Mal öffnen, aber lassen Sie einfach die Verbindung Pool dass verwalten - mir eine offene Verbindung geben, wenn es einen hat, oder öffnen Sie eine neue, wenn nicht.
Um dies zu erreichen, ist es wichtig, wenn ich die Verbindung jedes Mal neu erstellen (# 1), oder wenn ich einfach eine Verbindung wiederverwende und versuche, sie jedes Mal wieder zu öffnen (# 2)?
Mögliches Duplikat von [Ist es am besten, eine offene SqlConnection als Parameter zu übergeben oder in jeder Methode eine neue aufzurufen?] (Http://stackoverflow.com/questions/9807268/is-it-best-to-to- pass-a-open-sqlconnection-as-a-parameter-oder-call-a-new-one-in-ea) –