我正在新服务器上设置现有应用程序。它是Asp.Net和Classic Asp页面的混合体。 asp.net页面工作得很好,但经典的asp页面会出现以下错误:
[DBNETLIB] [ConnectionOpen(Connect())。] SQL Server不存在或 访问被拒绝。
我的设置:
以下是我尝试过的一些事情:
我的连接字符串:
connectionString="Data Source=(local);Initial Catalog=System;Persist Security Info=True;User ID=System;Password=mypassword" providerName="System.Data.SqlClient"
我的CLICONFG别名:
我已成功在此环境中安装该程序,之前没有任何问题。 *.asp
和asp.net
都使用相同的连接字符串,因此我无法看到这是一个问题。用户"系统"在连接字符串中指定的是在SQL中设置为具有所有权限的用户。
请帮忙!!我已经花了3天多的时间。
谢谢!
答案 0 :(得分:0)
我不太确定经典的asp能理解连接字符串中的所有参数。它可能忽略了它无法理解的东西,但我认为它最麻烦的是这个:
Data Source=(local)
可能
providerName="System.Data.SqlClient"
我会尝试:
创建第二个连接字符串,并使用一个用于经典ASP,另一个用于aspx。使用这个'简单'经典asp的格式:
Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;
更改数据源参数以使用实际的服务器或实例名称。
答案 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”,它运行正常。
如果我在安装过程中选择了“默认实例”,那么那里的连接字符串就可以正常运行....就像我在其他安装的服务器上完成的那样。
再次感谢!