Asp classic 经典的ASP DB打开功能不起作用

Asp classic 经典的ASP DB打开功能不起作用,asp-classic,windows-server-2008,Asp Classic,Windows Server 2008,我已经将一个在WindowsServer2003上运行的经典asp站点转移到WindowsServer2008,但突然以下代码停止工作 Const connStr_FC08 = "Provider=SQLNCLI10;Server=DS-47500;Database=TestDB;Uid=TestLogin;Pwd=test;Network=dbmssocn;" Function connDB(OpenDB) DIM conn SET conn = Server.CreateO

我已经将一个在WindowsServer2003上运行的经典asp站点转移到WindowsServer2008,但突然以下代码停止工作

Const connStr_FC08 = "Provider=SQLNCLI10;Server=DS-47500;Database=TestDB;Uid=TestLogin;Pwd=test;Network=dbmssocn;"

Function connDB(OpenDB)
    DIM conn
    SET conn = Server.CreateObject("ADODB.Connection")
    conn.open = connStr_FC08
    If OpenDB = "Y" Then conn.open
    connDB = conn
End Function

dim cn, cmd
cn = connDB("Y")
response.Write(cn.state)
这将返回以下错误

Microsoft VBScript runtime error '800a01a8' 

Object required: 'Provider=SQLNCLI10.1'
这发生在下面一行

response.write(cn.state)
谢谢
Chris

您安装了SQL提供程序,对吗


您可以将该函数放入一个简单的VBScript脚本中进行测试,而无需更改任何页面

如果我将打开的连接从函数中取出并放入内联,那么就不会有错误,它也会工作


但是我的整个网站都使用了这个功能,所以a)我不想重写我的代码,b)我不明白为什么它以前不起作用。

我发现你发布的代码可能存在一些语法问题:

    ...
    conn.open = connStr_FC08
    ...
    connDB = conn
...
cn = connDB("Y")
是否应将其更新为以下内容

    ...
    conn.ConnectionString = connStr_FC08
    ...
    Set connDB = conn
...
Set cn = connDB("Y")

这似乎永远不会奏效。(参见Mike Henry的语法建议)也许它过去之所以“起作用”是因为你在“On Error Goto Next”上加了“On Error Goto Next”并且错误被隐藏了?另外,如果你的“整个网站都是通过使用这个功能工作的”,为什么重新编写它会成为一个问题呢?为什么还要“重新编写”呢?你只需更改两行代码,整个网站就可以重新运行了