我正在使用Windows10和SQL Server 2017建立新机器,并且很难使我的旧ASP应用程序正确连接。
连接字符串看起来像这样:
"driver={SQL Server};uid=USERNAME;pwd=PASSWORD;server=LocalServer;Database=LocalDB;"
我可以使用这样的连接字符串进行连接:
"Provider=SQLNCLI11;Server=LocalServer;Database=LocalDB;Integrated Security=SSPI;DataTypeCompatibility=80;MARS Connection=True;"
...但是,这会导致现有代码的方式以及它与存储的Procs的交互方式产生很多错误,因此我试图使第一个连接字符串起作用。
该字符串的错误是这样的:
ODBC驱动程序的Microsoft OLE DB提供程序错误'80004005'
[[Microsoft] [ODBC SQL Server驱动程序] [共享内存] SSL安全错误
/ Codeshare / ServerSide / conx_current.asp,第8行
该代码如下:
dim sqlconn
set sqlconn = server.CreateObject("ADODB.CONNECTION")
dim cn : cn = getConx("current")
sqlconn.open cn
...其中getConx(“ current”)仅从上方返回连接字符串
如果有帮助,如果尝试使用SQL Server或SQL Server Native Client 11.0驱动程序创建ODBC连接,则会收到相同的错误消息。
TIA
SQL Sever之类的声音已经过强化,只允许使用更安全的协议(例如TLS 1.2和相关的强密码)。问题在于,较早的提供商不支持这些最新协议。 SQLNCLI11可以,但是您发现ADO的行为方式不同,从而破坏了ASP网站。
在大多数情况下,我发现将SET NOCOUNT ON
添加到SP和SQL批处理的顶部可以恢复90%的功能。然后是寻找其他问题的案例。
另一种选择是通过重新启用较旧的协议(例如SSL3)并重新启用最小的安全密码来回退服务器的强化
搜索“ TLS 1.2和SQLNCLI11”