Connessione ASP classica a SQL Server 2014 senza TLS 1.0 mediante ADODB.Connection


8

Con TLS 1.0 disabilitato nel nome della conformità PCI, non riesco a far funzionare un'applicazione ASP classica a 32 bit.

Per i consigli di scambio MS / Stack, ho installato:

  1. SQL Server 2014 SP1 CU1
  2. .NET Framework 4.6

Questo ha permesso alle nostre applicazioni ASP.NET / SSMS di funzionare. Ma la nostra applicazione ASP classica, che utilizza un ADODB.Connectionoggetto non funziona.

Ho provato una stringa di connessione che utilizza Provider=SQLNCLI11;, ma che non sembra aiutare neanche. Il provider di memoria condivisa si sta ancora lamentando del fatto che nulla si trovi sull'altra estremità della pipe. Messaggio di errore:

Errore "80004005" di Native Client 11.0 di Microsoft SQL Server

Provider di memoria condivisa: nessun processo è sull'altra estremità della pipe.

Ho anche provato a utilizzare Named Pipes con la stringa di connessione Provider=SQLNCLI11;Server=np:\\.\pipe\MSSQL$SQLEXPRESS\sql\query;Database=northwind;Trusted_Connection=Yes;e ho ricevuto questo messaggio di errore:

Errore "80004005" di Native Client 11.0 di Microsoft SQL Server

Provider di tubi con nome: nessun processo si trova sull'altra estremità del tubo.

Esiste una patch per ADODB di cui dovrei essere a conoscenza? Dovrei considerare l'uso di Named Pipes in qualche altro modo o simili? (anche se sono un po 'confuso sul perché la memoria condivisa non funziona, indipendentemente dalle impostazioni TLS)


Aggiornamenti dai commenti:

Il server Web e SQL Server si trovano nella stessa casella.

È un'istanza denominata SQLExpress. La stringa di connessione che funziona con TLS 1.0 abilitato è:

"Driver={SQL Server}; Server=.\SQLExpress; Database=northwind; Trusted_Connection=Yes; Integrated_Security=True;"

Ho anche provato:

"Provider=SQLNCLI11; Server=.\SQLExpress; Database=northwind; Trusted_Connection=Yes;"

Né funziona una volta che TLS 1.0 è disabilitato. So che Trusted_Connection / Integrated_Security è ridondante, ma non è nemmeno utile fare confusione con questi.

Ho abilitato, disabilitato e ordinato sia il TCP che i named pipe. Il nome della pipe utilizzata nella stringa di connessione sopra è direttamente dalla configurazione del server per quell'istanza. Ho anche provato a disabilitare la memoria condivisa per assicurarmi che le named pipe funzionino. Non ho provato TCP (come se la memoria condivisa non funzionasse a causa di TLS, perché TCP?) Memoria condivisa e Named Pipes funzionano entrambi con TLS 1.0 abilitato. Non appena capovolgo la chiave di registro per disabilitare TLS 1.0 (e riavviare), si verificano i messaggi di errore sopra riportati. Probabilmente metteremo questa macchina dietro un proxy.

Il servizio SQL Server non si avvia dopo aver disabilitato TLS 1.0 e SSL 3.0

Il problema descritto in quel link è affrontato da CU1 nella mia domanda posta sopra. L'istanza di SQL Server inizia con TLS 1.0 disabilitato (grazie all'aggiornamento MS). Le applicazioni basate su .NET funzionano perfettamente con l'istanza SQL (dopo l'aggiornamento alla 4.6). Questa domanda è specifica per un'applicazione ASP classica (32 bit). La mia comprensione è che il client nativo è anche patchato da CU1, quindi la mia confusione sul perché questo non funziona.

Risposte:


2

È possibile che tu stia tentando di utilizzare driver legacy a 32 bit.

Prova a eseguire C: \ Windows \ SysWOW64 \ odbcad32.exe per creare un DSN che si collega al database di SQL Server utilizzando il driver SQL Server a 32 bit. Prima prova la connettività usando la GUI.

Quindi prova a specificare il tuo DSN nella stringa di connessione in questo modo:

DSN=myDsn;Uid=myUsername;Pwd=;

La versione a 64 bit si trova in: C: \ Windows \ System32 \ odbcad32.exe

PS Non l'ho provato ma il nome del provider per SQL Server a 32 bit è in realtà "SQL Server". Sarebbe bello se tutto ciò che dovevi fare fosse sostituire SQLNCLI11 con SQL Server. Ecco il mio file DSN che ho creato con la versione a 32 bit - nota il driver ...

[ODBC]
DRIVER=SQL Server
UID=sa
WSID=P13-0000
APP=Microsoft® Windows® Operating System
SERVER=mcdba1

0

Per far funzionare i driver con TLS 1.2, avrai bisogno della correzione ADO.NET e SQLNCLI11.

A partire dal 29 gennaio, Microsoft SQL Server supporta TLS 1.2 per SQL Server 2008, SQL Server 2008 R2, SQL Server 2012 e SQL Server 2014 e i principali driver client come Server Native Client, Driver ODBC per SQL Server, Driver JDBC per SQL Server e ADO.NET (SqlClient).

Puoi leggere di più sulla versione qui . L'elenco di build che supportano TLS 1.2 insieme ai percorsi di download dei componenti client e server è disponibile in KB3135244 .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.