Diff. SqlConnection 1.1 vs 2.0

30/01/2009 - 14:17 von Armin Zingler | Report spam
Hallo miteinander,

hier làuft ein SQL-Server, der am Standardport (1433) lauscht. Der SQL
Server Browser Dienst làuft nicht. Wenn ich mit VB 2008 im ConnectionString
bei "Server=" nur "SERVERNAME" (ohne Instanz und ohne Port) angebe,
funktioniert der Verbindungsaufbau. Ich gehe davon aus, dass der
Verbindungsversuch dann automatisch auf dem Standard-Port durchgeführt wird.

Dasselbe in VB 2003 führt zur SqlException "Ungültige Verbindung.". Gibt's
da (offenbar) einen Unterschied? Steht das irgendwo geschrieben? In den
"breaking changes" habe ich jedenfalls nichts gefunden. Wenn ich den Port
explizit angebe, also "SERVERNAME,1433", dann funktioniert es.


Armin
 

Lesen sie die antworten

#1 Elmar Boye
30/01/2009 - 15:22 | Warnen spam
Hallo Armin,

Armin Zingler schrieb:
hier làuft ein SQL-Server, der am Standardport (1433) lauscht. Der SQL
Server Browser Dienst làuft nicht. Wenn ich mit VB 2008 im ConnectionString
bei "Server=" nur "SERVERNAME" (ohne Instanz und ohne Port) angebe,
funktioniert der Verbindungsaufbau. Ich gehe davon aus, dass der
Verbindungsversuch dann automatisch auf dem Standard-Port durchgeführt
wird.



Ja.
Dasselbe in VB 2003 führt zur SqlException "Ungültige Verbindung.".
Gibt's da (offenbar) einen Unterschied?



Indirekt schon. Der SqlClient aus .NET 1.1 verwendete die
gleichen unmanaged Netzwerkbibliotheken wie ODBC und OLEDB.
Ab .NET 2.0 ist vieles im SqlClient integriert. Und die Treiber
greifen auf unterschiedliche Schnittstellen-Konfigurationen zurück.

In Deinem Fall kann es daran liegen, dass er als Bibliothek
Named Pipes verwendet, je nachdem, was als Protokoll in der
(alten) Client Konfiguration (cliconfig.exe) oben steht.
Lauscht der Server nicht auf Named Pipes, geht das schief.

Stelle dort mal TCP nach oben (bzw. deaktiviere Named Pipes
komplett). Schau auch nach, ob es einen Alias gleichen Namens
gibt.

Wenn ich den Port explizit angebe, also "SERVERNAME,1433",
dann funktioniert es.



Die Portangabe erzwingt die Verwendung von TCP/IP.
Verstehen sollte er auch "tcp:SERVERNAME"
Ebenso wàre die Angabe der Netzwerkbibliothek
in der Verbindungszeichenfolge möglich:
Network Library='dbmssocn'

Gruß Elmar

Ähnliche fragen