我已将经典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;"
答案 0 :(得分:8)
如果它是Express实例,它很可能不是默认实例,而是命名实例。所以你可能意味着:
... "Provider=SQLNCLI10;Server=.\SQLEXPRESS; ...
--- instead of just (local) ---^^^^^^^^^^^^
否则,您需要在该计算机上向我们展示SQL Server配置管理器中的服务器属性,以便我们能够告诉您如何更正连接字符串。
答案 1 :(得分:3)
正如Aaron Bertrand所说,查看你的连接属性会很有意思(在Sql Server配置中检查以下是否启用了Name Pipes和TCP / Ip)。 既然您可以从SSMS连接,我会要求检查该服务器上是否允许远程连接。您还可以告诉Sql浏览器服务是否正在运行?
这是一个链接,我一直关注我作为SQL Server上可能的连接问题的提醒或检查列表。 Sql Connection Issues 最后你可以尝试作为提供者“SQLNCLI”而不是“SQLNCLI10”
答案 2 :(得分:2)
尝试在连接字符串中ping服务器。应用程序所在的服务器应该能够通过凭据指定的端口进行通信。如果您在本地开发,请尝试指定“localhost”。如果服务器是群集的,或者您作为实例安装,则需要指定该实例。如果使用sql凭据,还要确保服务器配置为混合模式身份验证。
或尝试
Data Source = localhost; Initial Catalog = DBNAME; Persist Security Info = True; User ID = MyUserName;密码= myPassword;复制代码
答案 3 :(得分:2)
它可能是权限问题,请检查服务器是否从SQL管理连接相同的配置详细信息。 其他是用户名/密码错误。
答案 4 :(得分:2)
以下是我要做的事情:
编辑:请注意,this SO post有一些用于创建正确连接字符串的有趣方法。
对不起,我不能指出一些事情并说,这就是问题!
祝你好运!答案 5 :(得分:2)
第31行:
cmd.ActiveConnection = Application("C2M_ConnectionString")
您如何实例化cmd
?
而不是ConnectionString错误,可能cmd
在新环境中的表现不同。
已编辑添加:
我看到你已经从IIS 7迁移到IIS 8.要在IIS 7上运行经典ASP站点,需要手动更改服务器默认值,例如“允许父路径”。是否有可能某些必要的调整没有被迁移过来?
如果您没有使用Option Strict On运行,那么您应该尝试一下 - 它经常会揭示这样的微妙问题的根源。 (当然,首先你将被迫声明你所有的变量,这些变量非常使用完成的代码非常繁琐。)
答案 6 :(得分: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;"
至少这是我在没有任何帮助的情况下会做的事情。也许您将能够获得更多有用的错误信息。
答案 7 :(得分: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:
如果您可以确认别名有问题,我建议您按照此处的指南创建一个新的: http://msdn.microsoft.com/en-us/library/ms190445(v=sql.105).aspx
答案 8 :(得分:2)
您是否尝试使用服务器IP 地址而不是“(本地)”? 像“服务器= 192.168.1.1; ”之类的东西(显然你需要使用服务器的真实IP地址)
如果您尝试使用服务器IP地址,请在您使用的IP地址上检查“ SQL-Server配置程序”, SQL Server正在侦听连接。 (SQL Server Configurator screenshot)
检查/尝试其他有用的事情:
答案 9 :(得分:2)
安装时默认禁用SQL Server Browser服务。我建议您启用并启动它。有关详细信息,请参阅this link和标题为“使用SQL Server Browser”的部分,以解释为什么这可能是您的问题。
如果您不想启用该服务,您可以启用TCP / IP协议(默认情况下已禁用),指定静态端口号,并使用127.0.01,<端口号>识别服务器。
答案 10 :(得分:2)
步骤1:启用TCP / IP协议 开始>>所有程序>> Microsoft SQL Server>>配置工具>> SQL Server配置管理器>> SQL Server网络配置>> MSSQLSERVER的协议>>右键单击“TCP / IP”并选择“启用”。
步骤2:将数据源属性值中的特定计算机名称更改为(本地)将解决问题ni SQL SERVER 2012。