Koneksi ASP klasik ke SQL Server 2014 tanpa TLS 1.0 menggunakan ADODB.Connection


8

Dengan TLS 1.0 dinonaktifkan atas nama kepatuhan PCI, saya tidak dapat menjalankan aplikasi ASP Klasik 32-bit.

Per rekomendasi MS / Stack Exchange, saya telah menginstal:

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

Ini telah menjalankan aplikasi ASP.NET / SSMS kami. Tetapi aplikasi Classic ASP kami, yang menggunakan ADODB.Connectionobjek tidak berfungsi.

Saya sudah mencoba koneksi string yang digunakan Provider=SQLNCLI11;, tetapi sepertinya tidak membantu juga. Penyedia Shared Memory masih mengeluh tentang tidak ada yang di ujung pipa. Pesan eror:

Microsoft SQL Server Native Client 11.0 kesalahan '80004005'

Shared Memory Provider: Tidak ada proses di ujung pipa yang lain.

Saya juga mencoba menggunakan Named Pipes dengan string koneksi Provider=SQLNCLI11;Server=np:\\.\pipe\MSSQL$SQLEXPRESS\sql\query;Database=northwind;Trusted_Connection=Yes;dan menerima pesan kesalahan ini:

Microsoft SQL Server Native Client 11.0 kesalahan '80004005'

Named Pipes Provider: Tidak ada proses di ujung pipa yang lain.

Apakah ada patch untuk ADODB yang harus saya ketahui? Haruskah saya mempertimbangkan menggunakan Pipa Bernama dengan cara lain atau sejenisnya sebagai gantinya? (walaupun saya sedikit bingung mengapa memori bersama tidak berfungsi, terlepas dari pengaturan TLS)


Pembaruan dari komentar:

Server web dan SQL Server berada di kotak yang sama.

Ini adalah contoh bernama SQLExpress. String koneksi yang berfungsi dengan TLS 1.0 diaktifkan adalah:

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

Saya juga sudah mencoba:

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

Tidak berfungsi setelah TLS 1.0 dinonaktifkan. Saya tahu Trusted_Connection / Integrated_Security adalah mubazir, tetapi bermain-main dengan ini tampaknya tidak membantu juga.

Saya sudah mengaktifkan, menonaktifkan, dan memesan untuk TCP dan pipa bernama. Nama pipa yang digunakan dalam string koneksi di atas adalah langsung dari Konfigurasi Server untuk contoh itu. Saya juga mencoba menonaktifkan Shared Memory untuk memastikan pipa bernama berfungsi. Saya belum mencoba TCP (seolah-olah Memori Bersama tidak berfungsi karena TLS, mengapa TCP?) Memori Bersama dan Pipa Bernama keduanya bekerja dengan TLS 1.0 diaktifkan. Segera setelah saya membalik kunci registri untuk menonaktifkan TLS 1.0 (dan reboot), pesan kesalahan di atas terjadi. Kami mungkin hanya akan menempatkan mesin ini di belakang proxy.

Layanan SQL server tidak akan mulai setelah menonaktifkan TLS 1.0 dan SSL 3.0

Masalah yang dijelaskan dalam tautan tersebut ditangani oleh CU1 dalam pertanyaan yang diajukan di atas. Contoh SQL Server TIDAK dimulai dengan TLS 1.0 dinonaktifkan (berkat pembaruan MS). Aplikasi berbasis .NET berfungsi dengan baik dengan contoh SQL (setelah pembaruan ke 4.6). Pertanyaan ini khusus untuk aplikasi Classic ASP (32-bit). Pemahaman saya adalah bahwa klien asli juga ditambal oleh CU1, maka kebingungan saya mengapa ini tidak berhasil.

Jawaban:


2

Anda mungkin mencoba menggunakan driver legacy 32 bit.

Coba jalankan C: \ Windows \ SysWOW64 \ odbcad32.exe untuk membuat DSN yang terhubung ke database SQL Server Anda menggunakan pengandar SQL Server 32 bit. Pertama-tama uji konektivitas menggunakan GUI.

Kemudian coba tentukan DSN Anda di string koneksi Anda seperti:

DSN=myDsn;Uid=myUsername;Pwd=;

Versi 64-bit terletak di: C: \ Windows \ System32 \ odbcad32.exe

PS Saya belum mencoba ini tetapi nama penyedia untuk 32-bit SQL Server sebenarnya "SQL Server". Akan lebih baik jika yang harus Anda lakukan adalah mengganti SQLNCLI11 dengan SQL Server. Inilah file DSN yang saya buat dengan versi 32 bit - perhatikan drivernya ...

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

0

Anda akan memerlukan perbaikan ADO.NET dan SQLNCLI11 untuk driver Anda agar dapat berfungsi dengan TLS 1.2.

Pada 29 Januari, Microsoft SQL Server mendukung TLS 1.2 untuk SQL Server 2008, SQL Server 2008 R2, SQL Server 2012 dan SQL Server 2014 dan driver klien utama seperti Server Native Client, Microsoft ODBC Driver untuk SQL Server, Microsoft JDBC Driver untuk SQL Server dan ADO.NET (SqlClient).

Anda dapat membaca lebih lanjut tentang rilis di sini . Daftar bangunan yang mendukung TLS 1.2 bersama dengan lokasi pengunduhan komponen klien dan server tersedia di KB3135244 .

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.