asp.net页面工作,但经典的asp提供访问被拒绝错误

时间:2015-07-20 16:55:55

标签: asp.net sql-server asp-classic iis-7

我正在新服务器上设置现有应用程序。它是Asp.Net和Classic Asp页面的混合体。 asp.net页面工作得很好,但经典的asp页面会出现以下错误:

  

[DBNETLIB] [ConnectionOpen(Connect())。] SQL Server不存在或   访问被拒绝。

我的设置:

  • Windows Server 2008 x64
  • IIS7
  • 带有高级服务的SQL 2008 Express
  • 32位申请

以下是我尝试过的一些事情:

  • 设置IIS7 AppPool以启用32位应用程序
  • 已启用" Active Server Pages" IIS中的扩展" ISAPI和CGI限制"
  • 安装了IIS7的Frontpage 2002扩展(来自RTR)
  • 在SQL Config Mgr中启用命名管道协议

我的连接字符串:

connectionString="Data Source=(local);Initial Catalog=System;Persist Security Info=True;User ID=System;Password=mypassword" providerName="System.Data.SqlClient"

我的CLICONFG别名:

  • 服务器别名=系统
  • 网络图书馆=命名管道
  • 连接参数=(本地)

我已成功在此环境中安装该程序,之前没有任何问题。 *.aspasp.net都使用相同的连接字符串,因此我无法看到这是一个问题。用户"系统"在连接字符串中指定的是在SQL中设置为具有所有权限的用户。

请帮忙!!我已经花了3天多的时间。

谢谢!

4 个答案:

答案 0 :(得分:0)

我不太确定经典的asp能理解连接字符串中的所有参数。它可能忽略了它无法理解的东西,但我认为它最麻烦的是这个:

Data Source=(local)

可能

providerName="System.Data.SqlClient"

我会尝试:

  1. 创建第二个连接字符串,并使用一个用于经典ASP,另一个用于aspx。使用这个'简单'经典asp的格式:

    Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;
    
  2. 更改数据源参数以使用实际的服务器或实例名称。

答案 1 :(得分:0)

System.Data.SqlClient是asp.net的数据提供者,它不适用于经典的asp。

这是SQL Server的经典ASP连接字符串的示例

Provider=sqloledb;Data Source=yourServerAddress;Initial Catalog=yourDataBase;User Id=yourUserid;Password=yourPwd;

有关更多示例,请参阅此处 - 查看oledb提供程序。

http://www.connectionstrings.com/sql-server/

另外,你在哪里放置你的连接字符串?如果它在web.config中,则.net将能够读取它,但是经典ASP不会。它需要进入想要连接的页面,包含在global.asa

编辑 - 一个额外的点。如果您正在使用SQL Server Express,那么您需要指定它 - 例如:

Data Source=localhost\SQLEXPRESS

答案 2 :(得分:0)

Shawnda,John和Evan提出了很好的建议和观点。

我将与您共享我的活动实时服务器配置,以便您在服务器上进行测试。如果您在IIS 7.x和Windows 2008 Server上使用任何SQL Server 2008运行MSSQL,那就是这样。

我运行2个服务器混合.Net和ASP一个Web 2008和2008 R2与IIS .Net站点与ASP使用一个公共数据库所有站点混合工作就好了。

首先提示,使您的连接字符串成为Call Function或Sub。 根据您的说法,您必须找到连接字符串的所有位置。

我们如何迁移将对您有所帮助。 创建您的函数并将其放入SQL包含的页面或包含在需要连接字符串的所有页面中的主脚本页面中。

Function ConnOpen(SqlConn)
Dim strConnSql
Set SqlConn = Server.CreateObject("ADODB.Connection")
strConnSql = "Provider=SQLNCLI10;Server=SERVERNAME\SQLEXPRESS;Database=DBNAME;UID=USER;PWD=PASSWORD;"
SqlConn.Open strConnSql
End Function

Function ConnClose(SqlConn)
SqlConn.Close
Set SqlConn = Nothing
End Function

按照建议进行操作并更改字符串。 这是我从数据库迁移网站的方式。 我将添加一个新的连接字符串作为函数,并在我的一个页面上测试它。 如果新连接有效,我将进行搜索并替换字符串。 一旦你弄清楚哪个连接字符串有效,你就会停止花3到3天的时间。

上面的字符串在我的inc_sqlpage.asp中的.Net站点上处于活动状态,该页面包含在需要数据库连接的所有页面中。

您应找到所有连接字符串,并使用更易于管理的功能删除和替换它们。

Call ConnOpen(MyConn)
... 'your SQL 
Call ConnClose(MyConn)

如果在这种方法之后仍然无法连接,那么我会说这是你的服务器命名或防火墙,如果这是一个新的服务器。

示例:我不使用IP地址连接仅内部DNS计算机名称。如果我将服务器名称更改为IP,我会看到相同类型的错误。 我确定你已经尝试了不同的设置,但尝试使用机器名称切换IP,。\和localhost但不是(本地)。

答案 3 :(得分:0)

我找到了解决方案!!!

感谢大家的帮助。我终于找到了解决方案!

结果我的经典asp页面的连接字符串期望使用默认实例安装SQL ....但我已经完成了一个命名实例。连接字符串具有“Data Source = System”(System是计算机上的别名设置,仅指定(本地)作为连接....它没有指定实例名称。)。

我将连接字符串更改为“Data Source =。\ SQLEXPRESS”,它运行正常。

如果我在安装过程中选择了“默认实例”,那么那里的连接字符串就可以正常运行....就像我在其他安装的服务器上完成的那样。

再次感谢!