由于以PCI合规性名义禁用了TLS 1.0,因此我无法使32位Classic ASP应用程序正常工作。
根据MS / Stack Exchange的建议,我已经安装了:
- SQL Server 2014 SP1 CU1
- .NET Framework 4.6
这使我们的ASP.NET应用程序/ SSMS运行。但是我们使用ADODB.Connection
对象的经典ASP应用程序无法正常工作。
我尝试了使用的连接字符串Provider=SQLNCLI11;
,但这似乎也无济于事。共享内存提供程序仍在抱怨管道的另一端没有任何内容。错误信息:
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设置如何,为什么共享内存无法正常工作,我还是有些困惑)
评论更新:
Web服务器和SQL Server在同一框中。
这是一个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(并重新启动),就会出现上述错误消息。我们可能只是将这台机器放在代理后面。
禁用TLS 1.0和SSL 3.0后,SQL Server服务将无法启动
在上面我提出的问题中,CU1解决了该链接中描述的问题。SQL Server实例DOES以禁用的TLS 1.0开始(由于MS更新)。基于.NET的应用程序在SQL实例中正常工作(更新至4.6之后)。此问题特定于经典ASP(32位)应用程序。我的理解是,本机客户端也被CU1修补,因此我对为什么它不起作用感到困惑。