web-dev-qa-db-de.com

Unterstützt Microsoft OLE DB Provider für SQL Server TLS 1.2?

Unser Client hat kürzlich ein Upgrade von TLS 1.0 auf TLS 1.2 durchgeführt. Danach kann sich unsere Software nicht mehr mit dem SQL Server verbinden. Es verwendet den DB-Provider OLE für die Verbindung zum SQL-Server. Nachfolgend ist der Fehler aufgeführt, der vom SQL-Server zurückgegeben wird.

[DBNETLIB] [ConnectionOpen SECDoClientHandshake ()] SSL-Sicherheitsfehler SQL-Status: 08001 SQL-Fehlernummer: 18

Es wurden keine nützlichen Informationen dazu gefunden, ob Microsoft OLE DB Provider für SQL Server TLS 1.2 unterstützt oder nicht.

Einer der Links, die ich gefunden habe, scheint darauf hinzudeuten, dass er nicht unterstützt wird. https://forums.iis.net/t/1233674.aspx?connecing+SQL+server+DB+issue+after+installingTLS1+2+in+SQL+srver+with+classic+asp+application+

Daher wollte ich den Stackoverflow überprüfen, falls jemand Informationen dazu hat.

10
Amit Rastogi

Der SQLOLEDB-Anbieter und der SQL Server ODBC Treiber, die im Lieferumfang von Windows enthalten sind, sind Legacy-Komponenten, die nur aus Gründen der Abwärtskompatibilität bereitgestellt werden. Diese sind seit SQL 2005 veraltet.

Laut dieser Blogpost vom MSSQL Tiger Team :

SQLOLEDB erhält keine Unterstützung für TLS 1.2. Sie müssen Ihren Treiber auf einen der unterstützten Treiber umstellen, die unter https://support.Microsoft.com/en-us/kb/3135244 aufgeführt sind

Sie sollten in der Lage sein, SQL Server Native Client 2012 zu installieren und diesen OLE DB-Provider nur mit einer Änderung der Verbindungszeichenfolge zu verwenden (change Provider=SQLOLEDB bis Provider=SQLNCLI11). Natürlich sollte man mal testen, um Überraschungen zu vermeiden. Ich erinnere mich beispielsweise an jemanden, bei dem es zu Verhaltensunterschieden mit dem SQL Server Native Client-Anbieter und ADO classic kam, als Server-API-Cursor verwendet wurden, obwohl die häufig verwendeten Firehose-Cursor in Ordnung waren.

[~ # ~] edit [~ # ~]

Der neue OLE DB-Treiber MSOLEDBSQL wurde veröffentlicht. Dieser neue Treiber unterstützt die neuesten TLS 1.2-Standards und ist abwärtskompatibel mit SQL Server Native Client 11 (SQLNCLI11). Siehe Ankündigung des Microsoft SQLNCLi-Teamblogs .

18
Dan Guzman

Dies ist möglicherweise keine Lösung für Sie, da es sich um eine zukünftige Korrektur handelt, auf die Ihr Client möglicherweise nicht warten kann, aber anscheinend ist Microsoft undeprecating der OLEDB-Treiber mit einer neuen Version, die TLS 1.2 unterstützt Q1 2018: https://blogs.msdn.Microsoft.com/sqlnativeclient/2017/10/06/kündigen-das-neue-Release-of-ole-db-driver-for-sql-server/ an

Der neue Microsoft OLE DB-Treiber für SQL Server oder msoledbsql wird in dieser ersten anstehenden Version auch Failover-Funktionen für mehrere Subnetze einführen und auf dem neuesten Stand sein TLS 1.2 Standards .

Außerdem handelt es sich bei dieser ersten anstehenden Version um ein eigenständiges Installationspaket, das mit dem SQL Server-Lebenszyklus nicht in Einklang steht. Dies bedeutet auch, dass der Treiber weder in die SNAC-Bibliothek gepackt noch mit einem anderen Treiber gekoppelt wird.

8
SeanG

Nachdem ich Änderungen vorgenommen habe, wurde das Problem nach dem TLS1.2-Upgrade in der Azure-Cloud behoben.

  • veränderung Provider=SQLOLEDB bis Provider=SQLNCLI11
  • aktualisieren Sie die ADODB-Version auf die Microsoft ActiveX Data Objects 6.0-Bibliothek
0
Manish Gohil

Dies beantwortet die Frage möglicherweise nicht direkt, hängt jedoch mit der SQL Server-Verbindung mit dem TLS 1.2-Fehler zusammen.

Ich betreue eine alte ASP Klassische Website, die mit folgendem Fehler kaputt gegangen ist.

Microsoft OLE DB Provider for SQL Server error '80004005'
[DBNETLIB][ConnectionOpen (SECDoClientHandshake()).]SSL Security error. 

Ändern von Provider von SQLOLEDB in SQL Server Native Client 11.0 oder eine höhere Version, die verfügbar ist, hat den Fehler behoben.

Somit ändert sich die Verbindungszeichenfolge von

constr = "Provider=SQLOLEDB;Data Source=..."

zu

constr = "Provider=SQL Server Native Client 11.0;Data Source=...."

könnte auch funktionieren

0
AaA