【问题标题】:Accessing remote SQL server from ASP classic not working on a specific computer从 ASP 经典访问远程 SQL 服务器无法在特定计算机上运行
【发布时间】:2014-04-27 11:31:57
【问题描述】:

我有 2 台计算机尝试通过一段用经典 ASP 编写的代码访问远程 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  

%>

【问题讨论】:

标签: sql-server iis asp-classic database-connection


【解决方案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 - 尾随和开头的空格应该被忽略 - 所以正确的行为是有效的)

如果有人知道这是为什么 - 很高兴知道

谢谢

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 您是否尝试为入站和出站的 sqlserv.exe 创建异常?完全禁用防火墙似乎有点过于激进了。
    • 我做到了,这是唯一有效的解决方案。考虑到它在 Win7 上工作并且突然停止在 Win8 上工作的事实,我认为 Win8 中的防火墙存在问题,其中微软很可爱意识到关闭.. 无论如何,对于商业网络上的计算机来说,这不应该是一个问题,我们毕竟受到多层安全性的保护
    • 我忘了提到我在那个端口上有 telnet 连接......无论如何 - 我找到了问题,我会发布答案谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-07
    • 1970-01-01
    相关资源
    最近更新 更多