5

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

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

我什至不确定连接字符串是否有问题

新服务器是 Windows 2012 Server、SQL Server 2008 R2 Express 机器。


Microsoft OLE DB Provider for SQL Server error '80004005'

[DBNETLIB][ConnectionOpen (Connect()).]SQL Server does not exist or access denied.

/scripts/dbcode.asp, line 31 

Application("C2M_ConnectionString") = "Provider=SQLNCLI10;Server=(local);Database=mysite_live;Uid=mysitec_Live;Pwd=mypass;"
4

11 回答 11

8

如果它是 Express 实例,它很可能不是默认实例,而是命名实例。所以你可能的意思是:

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

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

于 2013-02-28T03:27:03.680 回答
3

正如 Aaron Bertrand 所提到的,看看您的连接属性会很有趣(在 Sql Server 配置中检查以下是否启用了名称管道和 TCP/Ip)。由于您可以从 SSMS 进行连接,因此我会要求检查该服务器上是否允许远程连接您还可以判断 Sql 浏览器服务是否正在运行?

这是一个链接,我一直在身边,作为 SQL Server 上可能的连接问题的提醒或检查列表。 Sql 连接问题 最后你可以尝试作为提供者“SQLNCLI”而不是“SQLNCLI10”

于 2013-03-04T23:02:38.007 回答
2

这是我要做的:

编辑:请注意,这个 SO post,几个下来,有一个有趣的方法来创建正确的连接字符串来使用。

  1. 打开 SSMS(Sql Server Management Studio)并复制/粘贴用户名/密码。不要键入它们,复制/粘贴。确认没有问题。
  2. 启动代码(这对我来说是下一个 b/c,在我的情况下,这将是下一个最容易做的事情)并进入第 31 行以验证所有设置是否正确。这是有关如何执行此操作的一些信息。我知道这对你来说可能是不可能的,因为它正在生产中,所以你可以跳过这一步。如果可能的话,我会在我的本地机器上设置它并验证本地连接没有问题。如果我在本地收到此错误,那么我有更好的机会修复它。
  3. 验证 Provider=SQLNCLI10 是否安装在生产服务器上。我会关注这个 SO post,可能是 gbn 发布的答案。
  4. 您还有其他工作网站吗?他们中的任何一个都是经典的asp吗?即使不是,我也会将另一个站点中的连接字符串与您在此处使用的连接字符串进行比较。确保没有明显的差异。
  5. 启动 SQL Server Profiler 并开始跟踪。连接到该站点并导致错误,然后转到分析器并查看它是否为您提供了额外的错误信息。
  6. 如果这一切都失败了,我会开始经历这个

抱歉,我不能指着什么说,有问题!

祝你好运!

于 2013-03-05T14:08:42.023 回答
2

您是否尝试过 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;"

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

于 2013-03-08T00:23:41.937 回答
2

步骤 1:启用 TCP/IP 协议开始 >> 所有程序 >> Microsoft SQL Server >> 配置工具 >> SQL Server 配置管理器 >> SQL Server 网络配置 >> MSSQLSERVER 的协议 >> 右键单击​​“TCP/IP”并选择“启用”。

步骤 2:将数据源属性值中的特定机器名称更改为(本地)将解决 SQL SERVER 2012 的问题。

于 2014-09-28T16:31:54.113 回答
2

SQL Server Browser 服务在安装时默认禁用。我建议您启用并启动它。有关详细信息,请参阅此链接和标题为“使用 SQL Server Browser”的部分,以了解为什么这可能是您的问题。

如果您不想启用该服务,您可以启用 TCP/IP 协议(​​默认禁用),指定静态端口号,并使用 127.0.01,<port number> 来标识服务器。

于 2013-03-10T16:41:24.993 回答
2

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

于 2013-02-28T12:00:05.300 回答
2

这可能是 x86/x64 的东西吗?

以下线程似乎表明(本地)别名是 32 位别名,在 64 位服务器上失败: http: //social.msdn.microsoft.com/Forums/en-US/sqldataaccess/thread/c701d510- 90e5-4dd0-b14f-ca1d694d6615 (请注意,错误正是您所拥有的)

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

按照这篇博文(http://blogs.msdn.com/b/farukcelik/archive/2007/12/31/udl-test-on-a-64-bit-machine.aspx)的建议,你可以测试你的本地udl:

  • 在 64 位中,只需双击它(与运行 "C:\Program Files\Common Files\System\Ole DB\oledb32.dll",OpenDSLFile C:\\test.udl
  • 在 32 位中通过双重运行 C:\Windows\syswow64\rundll32.exe "C:\Program Files (x86)\Common Files\System\Ole DB\oledb32.dll",OpenDSLFile C:\\test.udl

如果您可以确认别名有问题,我建议您按照此处的指南创建一个新的:http: //msdn.microsoft.com/en-us/library/ms190445(v=sql.105) .aspx

于 2013-03-08T14:27:39.377 回答
2

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

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

其他有用的检查/尝试:

  • 并检查数据库是否在默认 SQL Server 实例中,或者它是否在命名实例中。
  • 您是否检查过防火墙是否有打开 SQL Server 端口的 TCP/IP 规则?
  • 您是否尝试过使用其他使用 TCP/IP 连接的软件连接到 SQL Server ?
于 2013-03-09T17:56:57.527 回答
2

在第 31 行:

cmd.ActiveConnection = Application("C2M_ConnectionString")

你是如何实例化的cmd

而不是 ConnectionString 是错误的,也许cmd是在新环境中表现不同。

编辑添加:

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

如果您没有使用 Option Strict On 运行,您应该尝试一下 - 它通常会揭示此类细微问题的根源。(当然,首先您将被迫声明所有变量,这对于完成的代码非常繁琐。)

于 2013-03-05T23:53:29.573 回答
2

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

或尝试

数据源=localhost;初始目录=DBNAME;持久安全信息=True;用户ID=MyUserName;密码=我的密码;

于 2013-02-28T03:00:56.380 回答