Классическое ASP-соединение с SQL Server 2014 без TLS 1.0 с использованием ADODB.Connection

8

С отключенным TLS 1.0 во имя соответствия PCI я не могу заставить работать 32-битное приложение Classic ASP.

В соответствии с рекомендациями MS / Stack Exchange я установил:

  1. SQL Server 2014 с пакетом обновления 1 (SP1) CU1
  2. .NET Framework 4.6

Это запустило наши приложения ASP.NET / SSMS. Но наше приложение Classic ASP, которое использует ADODB.Connectionобъект, не работает.

Я пробовал строку подключения, которая использует Provider=SQLNCLI11;, но это, похоже, тоже не помогает. Поставщик Shared Memory все еще жалуется, что на другом конце канала ничего не находится. Сообщение об ошибке:

Собственный клиент Microsoft SQL Server 11.0, ошибка «80004005»

Поставщик общей памяти: на другом конце канала нет процесса.

Я также попытался использовать именованные каналы со строкой подключения Provider=SQLNCLI11;Server=np:\\.\pipe\MSSQL$SQLEXPRESS\sql\query;Database=northwind;Trusted_Connection=Yes;и получил это сообщение об ошибке:

Собственный клиент Microsoft SQL Server 11.0, ошибка «80004005»

Поставщик именованных каналов: на другом конце канала нет процесса.

Есть ли патч для ADODB, о котором я должен знать? Должен ли я рассмотреть использование именованных каналов каким-либо другим способом или что-то подобное? (хотя я немного озадачен тем, почему общая память не работает, независимо от настроек TLS)


Обновления от комментариев:

Веб-сервер и SQL-сервер находятся в одном окне.

Это SQLExpress именованный экземпляр. Строка подключения, работающая с включенным TLS 1.0:

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

Я также попробовал:

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

Ни одна из них не работает после отключения TLS 1.0. Я знаю, что Trusted_Connection / Integrated_Security является избыточным, но возиться с этим, похоже, тоже не помогает.

Я включил включение, отключение и порядок как для TCP, так и для именованных каналов. Имя канала, использованного в строке подключения выше, прямо из Конфигурации сервера для этого экземпляра. Я также попытался отключить общую память, чтобы убедиться, что именованные каналы работают. Я не пробовал TCP (как будто Общая память не работает из-за TLS, почему TCP?) Совместная память и Именованные каналы работают с включенным TLS 1.0. Как только я переворачиваю ключ реестра, чтобы отключить TLS 1.0 (и перезагрузить компьютер), появляются указанные выше сообщения об ошибках. Мы, вероятно, просто собираемся поставить эту машину за прокси.

Служба сервера SQL не запускается после отключения TLS 1.0 и SSL 3.0

Проблема, описанная в этой ссылке, решена CU1 в моем изложенном выше вопросе. Экземпляр SQL Server запускается с отключенным TLS 1.0 (благодаря обновлению MS). Приложения на основе .NET прекрасно работают с экземпляром SQL (после обновления до 4.6). Этот вопрос относится к классическому ASP (32-разрядному) приложению. Насколько я понимаю, собственный клиент также пропатчен CU1, поэтому я не понимаю, почему это не работает.

userx
источник

Ответы:

2

Возможно, вы пытаетесь использовать устаревшие 32-битные драйверы.

Попробуйте запустить C: \ Windows \ SysWOW64 \ odbcad32.exe, чтобы создать DSN, который подключается к базе данных SQL Server с помощью 32-разрядного драйвера SQL Server. Сначала проверьте подключение с помощью графического интерфейса.

Затем попробуйте указать свой DSN в строке подключения следующим образом:

DSN=myDsn;Uid=myUsername;Pwd=;

64-разрядная версия находится в: C: \ Windows \ System32 \ odbcad32.exe

PS Я не пробовал это, но имя поставщика для 32-битного SQL Server на самом деле "SQL Server". Было бы хорошо, если бы все, что вам нужно было сделать, это заменить SQLNCLI11 на SQL Server. Вот мой файл DSN, который я создал с 32-битной версией - обратите внимание на драйвер ...

[ODBC]
DRIVER=SQL Server
UID=sa
WSID=P13-0000
APP=Microsoft® Windows® Operating System
SERVER=mcdba1
ужалить
источник
0

Вам потребуется исправление ADO.NET и SQLNCLI11 для ваших драйверов, чтобы они работали с TLS 1.2.

По состоянию на 29 января Microsoft SQL Server поддерживает TLS 1.2 для SQL Server 2008, SQL Server 2008 R2, SQL Server 2012 и SQL Server 2014 и основные драйверы клиента, такие как собственный клиент сервера, драйвер Microsoft ODBC для SQL Server, драйвер Microsoft JDBC для SQL Server и ADO.NET (SqlClient).

Вы можете прочитать больше о релизе здесь . Список сборок, поддерживающих TLS 1.2, а также местоположения загрузки компонентов клиента и сервера, доступен в KB3135244 .

Амит Банерджи
источник