SQL Server的Microsoft OLE DB提供程序错误';80004005';

SQL Server的Microsoft OLE DB提供程序错误';80004005';,sql,sql-server,sql-server-2008,asp-classic,Sql,Sql Server,Sql Server 2008,Asp Classic,我已经将一个经典的ASP站点迁移到一个新服务器,并收到以下错误消息 我尝试了不同的连接字符串,但都不起作用 我甚至不确定连接字符串是否是问题所在 新服务器是Windows 2012 server、SQL server 2008 R2 Express计算机 尝试在连接字符串中ping服务器。应用程序所在的服务器应该能够在您通过凭据指定的端口上进行通信。如果您在本地开发,请尝试指定“localhost”。如果服务器是群集服务器或作为实例安装,则需要指定该实例。如果使用sql凭据,还要确保服务器配

我已经将一个经典的ASP站点迁移到一个新服务器,并收到以下错误消息

我尝试了不同的连接字符串,但都不起作用

我甚至不确定连接字符串是否是问题所在

新服务器是Windows 2012 server、SQL server 2008 R2 Express计算机




尝试在连接字符串中ping服务器。应用程序所在的服务器应该能够在您通过凭据指定的端口上进行通信。如果您在本地开发,请尝试指定“localhost”。如果服务器是群集服务器或作为实例安装,则需要指定该实例。如果使用sql凭据,还要确保服务器配置为混合模式身份验证

或尝试


数据源=本地主机;初始目录=DBNAME;持久安全信息=True;用户ID=我的用户名;密码=我的密码

如果它是Express实例,则很可能不是默认实例,而是命名实例。你可能是说:

... "Provider=SQLNCLI10;Server=.\SQLEXPRESS; ...
--- instead of just (local) ---^^^^^^^^^^^^

否则,您需要在该计算机上的SQL server Configuration Manager中向我们显示服务器属性,以便我们能够告诉您如何更正连接字符串。

这可能是权限问题,请检查服务器是否使用SQL management中相同的配置详细信息进行连接。
另一个是用户名/密码错误。

正如Aaron Bertrand提到的,查看您的连接属性(在Sql Server配置中,检查是否启用了以下名称管道和TCP/Ip)会很有趣。 由于您可以从SSMS进行连接,我想问您是否允许在该服务器上进行远程连接。您能告诉我Sql browser服务是否正在运行吗

这里有一个链接,我将它作为提醒或检查SQL Server上可能出现的连接问题的清单保存在身边。
最后,您可以尝试使用“SQLNCLI”而不是“SQLNCLI10”作为提供程序

编辑:请注意,下面的几个示例中,有一个有趣的方法用于创建要使用的正确连接字符串

  • 打开SSMS(Sql Server Management Studio)并复制/粘贴 用户名/密码。不要键入,复制/粘贴。确认没有 一个问题
  • 启动代码(这是我的下一个b/c这将是下一个 在我的情况下最容易做的事情)并转到第31行来验证 一切都安排妥当了。怎么办 这我知道这对你来说是不可能的 正在生产中,因此您可以跳过此步骤。如果可能的话 尽管如此,我还是在我的本地机器上设置了这个,并验证是否存在 本地连接没有问题。如果我在本地得到这个错误,那么我 有更好的机会修复它
  • 验证生产服务器上是否安装了Provider=SQLNCLI10 服务器。我会遵循,可能是贴出的答案 由gbn提供
  • 你有其他的工作网站吗?它们中有哪一个是经典的asp?即使 如果没有,我会将另一个站点中的连接字符串与另一个站点中的连接字符串进行比较 你在这里用的。确保没有明显的差异
  • 启动SQL Server探查器并开始跟踪。连接到站点 并导致错误,然后转到探查器,查看它是否为您提供 其他错误信息
  • 如果所有这些都失败了,我会的
  • 对不起,我不能指着什么说,有问题了

    祝你好运

    第31行:

    cmd.ActiveConnection = Application("C2M_ConnectionString")
    
    如何实例化
    cmd

    与连接字符串错误不同的是,
    cmd
    在新环境中的行为可能有所不同

    编辑以添加:

    我看到您已从IIS 7转到IIS 8。要在IIS 7上运行经典ASP站点,需要手动更改服务器默认值,例如“允许父路径”。是否可能某些必要的调整没有迁移过来


    如果你没有在Option Strict On下运行,你应该试试——它经常会暴露出这样微妙问题的根源。(当然,首先您必须声明所有变量,这对于完成的代码来说非常繁琐。)

    您是否尝试过SQL Server OLE DB驱动程序连接字符串:

    "Provider=sqloledb;Data Source=(local);Initial Catalog=mysite_live;User Id=mysitec_Live;Password=mypass;"
    
    或ODBC驱动程序:

    "Driver={SQL Server};Server=SERVERNAME;Trusted_Connection=no;Database=mysite_live;Uid=mysitec_Live;Pwd=mypass;"
    

    如果没有任何帮助,至少我会这么做。也许您可以获得更多有用的错误信息。

    这可能是x86/x64的问题吗

    以下线程似乎表明(本地)别名是在64位服务器上失败的32位别名: (请注意,错误与您的错误完全相同)

    在服务器上测试.udl时,是否同时测试了x86和x64

    按照本文()的建议,您可以测试您的 本地udl:

    • 在64位中,只需双击它(与运行“C:\Program Files\Common Files\System\Ole DB\oledb32.dll”相同),OpenDSL文件C:\\test.udl
    • 通过双重运行C:\Windows\syswow64\rundll32.exe“C:\Program Files(x86)\Common Files\System\Ole DB\oledb32.dll”,OpenDSL文件C:\\test.udl,以32位格式显示
    如果您能确认别名有问题,我建议您按照此处的指导原则创建一个新别名:

    您是否尝试使用服务器IP地址而不是“(本地)”地址? 类似于“Server=192.168.1.1;”(显然,您需要使用服务器的真实IP地址)

    如果您试图使用服务器IP地址,请在“SQL server配置程序”中检查SQL server正在侦听您在连接中使用的IP地址。()

    其他有用的检查/尝试事项:

    • 并检查数据库是否位于默认SQL Server实例中,或者是否位于命名实例中
    • 您是否已检查防火墙是否具有打开SQL Server端口的TCP/IP规则
    • 您是否尝试使用其他使用TCP/IP连接的软件连接到SQL Server

    默认情况下,在上禁用SQL Server浏览器服务
    "Provider=sqloledb;Data Source=(local);Initial Catalog=mysite_live;User Id=mysitec_Live;Password=mypass;"
    
    "Driver={SQL Server};Server=SERVERNAME;Trusted_Connection=no;Database=mysite_live;Uid=mysitec_Live;Pwd=mypass;"