2014-04-27 99 views
0

上不工作我有2台电脑试图通过写在传统的ASP访问远程SQL服务器的特定计算机

两台计算机的一段代码来访问远程SQL服务器是在同一个局域网(为此 - 同一个外部IP地址)

在计算机A(其已安装的Windows 7) - 连接工作正常,而在计算机B(与Windows 8) - 我收到以下错误:

Microsoft OLE DB Provider for ODBC Drivers error '80004005' 

[Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied. 

两者都试图从本地IIS中运行脚本使用默认默认网站应用程序池

我试图使32位应用程序,以在64位操作系统上运行 - 没有工作

我试图运行的代码很简单,只要:

<%@ language="vbscript" codepage="65001" %> 
<% 
session.CodePage = 65001 

dim ServerName , sqlUser, sqlPasw, sqlDBName, Conn 

ServerName = "SERVER IP" 
sqlUser  = "USER" 
sqlPasw  = "PASSWPRD" 
sqlDBName = "DBNAME" 


Set Conn = Server.CreateObject("ADODB.Connection") 

Conn.Open "Driver={SQL Server};Server=" & Cstr(ServerName) & " ;Uid=" & Cstr(sqlUser) & ";Pwd=" & Cstr(sqlPasw) & ";Database=" & Cstr(sqlDBName) 
Conn.Close 

Set Conn = Nothing 

%> 
+0

您有试过OLEDB连接如字符串,而不是ODBC。看到这里的例子 - http://www.connectionstrings.com/sql-server/ – John

回答

1

最后我发现这个问题,这是荒谬的

的问题在这里的额外空间(在连接字符串的Uid部分前):

Conn.Open "Driver={SQL Server};Server=" & Cstr(ServerName) & " ;Uid=" & Cstr(sqlUser) & ";Pwd=" & Cstr(sqlPasw) & ";Database=" & Cstr(sqlDBName) 

我不知道这是为什么工作在Windows 7,而不是Windows 8的 - 但发生了什么

(据Microsoft's documentation - 尾随开放空格应该被忽略 - 因此,正确的行为是工作的一个)

如果有人知道这是为什么 - 这将是很好知道

感谢

0

检查Windows 8上的防火墙配置。我必须在Win8上禁用它(防火墙),因为没有配置更改有助于SQL通过。

+0

你有没有尝试创建一个例外的sqlserv.exe,无论是在内部和外部?完全禁用防火墙似乎有点过于激烈。 – dean

+1

我做了,这是唯一的解决方案。考虑到它在Win7上工作,并突然停止在Win8上工作的事实,我认为在Win8中存在一个问题,微软可以很好地意识到这一点。无论如何对于商业网络上的计算机,它不应该是一个问题,我们终究受多层安全保护 – AlekseyF

+0

我忘了提及,我在该端口上的telnet连接... 任何方式 - 我发现了这个问题,我会发布答案 谢谢! –

相关问题