Da TLS 1.0 im Namen der PCI-Konformität deaktiviert ist, kann eine 32-Bit-Classic-ASP-Anwendung nicht funktionieren.
Gemäß den Empfehlungen von MS / Stack Exchange habe ich Folgendes installiert:
- SQL Server 2014 SP1 CU1
- .NET Framework 4.6
Dadurch wurden unsere ASP.NET-Anwendungen / SSMS ausgeführt. Unsere klassische ASP-Anwendung, die ein ADODB.Connection
Objekt verwendet, funktioniert jedoch nicht.
Ich habe versucht, eine Verbindungszeichenfolge zu verwenden Provider=SQLNCLI11;
, aber das scheint auch nicht zu helfen. Der Shared Memory-Anbieter beschwert sich immer noch darüber, dass sich nichts am anderen Ende der Pipe befindet. Fehlermeldung:
Microsoft SQL Server Native Client 11.0-Fehler '80004005'
Shared Memory Provider: Am anderen Ende der Pipe befindet sich kein Prozess.
Ich habe auch versucht, Named Pipes mit der Verbindungszeichenfolge zu verwenden, Provider=SQLNCLI11;Server=np:\\.\pipe\MSSQL$SQLEXPRESS\sql\query;Database=northwind;Trusted_Connection=Yes;
und die folgende Fehlermeldung erhalten:
Microsoft SQL Server Native Client 11.0-Fehler '80004005'
Named Pipes Provider: Am anderen Ende der Pipe befindet sich kein Prozess.
Gibt es einen Patch für ADODB, den ich beachten sollte? Sollte ich in Betracht ziehen, Named Pipes stattdessen auf eine andere oder ähnliche Weise zu verwenden? (obwohl ich ein wenig verblüfft bin, warum Shared Memory unabhängig von den TLS-Einstellungen nicht funktioniert)
Aktualisierungen aus Kommentaren:
Der Webserver und der SQL Server befinden sich in derselben Box.
Es ist eine SQLExpress-Instanz. Die Verbindungszeichenfolge, die mit aktiviertem TLS 1.0 funktioniert, lautet:
"Driver={SQL Server}; Server=.\SQLExpress; Database=northwind; Trusted_Connection=Yes; Integrated_Security=True;"
Ich habe auch versucht:
"Provider=SQLNCLI11; Server=.\SQLExpress; Database=northwind; Trusted_Connection=Yes;"
Weder funktioniert, wenn TLS 1.0 deaktiviert ist. Ich weiß, dass Trusted_Connection / Integrated_Security redundant ist, aber das Herumspielen mit diesen scheint auch nicht zu helfen.
Ich habe das Aktivieren, Deaktivieren und Bestellen von TCP- und Named Pipes umgeschaltet. Der Name der in der obigen Verbindungszeichenfolge verwendeten Pipe stammt direkt aus der Serverkonfiguration für diese Instanz. Ich habe auch versucht, Shared Memory zu deaktivieren, um sicherzustellen, dass Named Pipes funktionieren. Ich habe TCP nicht ausprobiert (als ob Shared Memory aufgrund von TLS nicht funktioniert, warum sollte TCP nicht funktionieren?) Shared Memory und Named Pipes funktionieren beide mit aktiviertem TLS 1.0. Sobald ich den Registrierungsschlüssel umlege, um TLS 1.0 zu deaktivieren (und neu zu starten), treten die oben genannten Fehlermeldungen auf. Wir werden diesen Computer wahrscheinlich nur hinter einen Proxy stellen.
Der SQL Server-Dienst wird nach dem Deaktivieren von TLS 1.0 und SSL 3.0 nicht gestartet
Das in diesem Link beschriebene Problem wird von CU1 in meiner oben gestellten Frage behandelt. Die SQL Server-Instanz startet mit deaktiviertem TLS 1.0 (dank des MS-Updates). .NET-basierte Anwendungen funktionieren problemlos mit der SQL-Instanz (nach dem Update auf 4.6). Diese Frage ist spezifisch für eine klassische ASP-Anwendung (32-Bit). Ich verstehe, dass der native Client auch von CU1 gepatcht wird, daher meine Verwirrung darüber, warum dies nicht funktioniert.