我正在尝试开发与MSSQL 2005服务器的ASP SQL连接。 SQL服务器是我们主域服务器后面的子服务器,因此已经从WAN设置了端口转发>端口1433上的LAN允许流量访问第二个服务器。
我已经在我的终端上进行了telnet测试,看看端口转发是否正常工作,它告诉我连接被拒绝了。当我运行脚本时,我得到以下结果:
Microsoft OLE DB Provider for SQL Server错误“80004005”
[DBNETLIB] [ConnectionOpen(Connect())。] SQL Server不存在或 访问被拒绝。
代码如下:
<%
Dim cn
Dim rs
Dim SQL
SQL = "SELECT count(*) FROM master"
'create an instance of the ADO cn and rs objects
Set cn = Server.CreateObject("adodb.connection")
Set rs = Server.CreateObject("adodb.recordset")
'open the cn to the database
cn.Open "Provider=SQLOLEDB;Data Source=###.###.###.###,1433;Network Library=DBMSSOCN;Initial Catalog=blah;User ID=blah;Password=blah"
'Open the rs object executing the SQL statement and return records
rs.Open SQL,cn,adOpenKeyset,adLockOptimistic
'first of all determine whether there are any records
If rs.EOF Then
Response.Write("No records returned.")
Else
'if there are records then loop through the fields
Do While NOT rs.Eof
Response.write rs("count")
Response.write "<br>"
rs.MoveNext
Loop
End If
'close the cn and rs objects to free up resources
rs.Close
Set rs=nothing
cn.Close
Set cn=nothing
%>
由于
答案 0 :(得分:1)
此外,请检查“Microsoft SQL Server 2005”/“配置工具”下的“开始”菜单中的 Surface Area Configuration ,以确保 TCP已启用。我认为默认情况下只启用命名管道。
<强>防火墙强>
阻止与SQL Server连接的第一件事是防火墙。如果您有任何防火墙,请确保将它们配置为允许连接到SQL Server。 SQL Server使用的默认TCP端口为1433.防火墙包括McAfee,Norton,Windows XP SP2附带的Windows防火墙以及Windows 2000附带的Internet连接防火墙(ICF)。
服务验证
在连接到SQL Server 2005之前,需要验证SQL Server是否正在运行。默认情况下,SQL Server Express版本作为命名实例(SQLEXPRESS)安装。这意味着您需要使用本地计算机上的(本地)\ SQLEXPRESS访问它。没有前缀的SQLEXPRESS将无法使用。您还可以使用本地计算机上的127.0.0.1 IP地址来避免与DNS相关的问题。
要验证服务是否正在运行,请在命令提示符下键入sqlcmd -S(local)\ SQLEXPRESS。如果你看到“1&gt;”这意味着你设法连接。输入exit退出sqlcmd程序。
连接协议
SQL Server 2005支持许多用于将客户端应用程序与数据库服务器连接的协议。这些协议是TCP,命名管道(NP),共享内存(SM),VIA和HTTP。 SQL Server Express中仅支持TCP,NP和SM。
默认情况下,本地计算机上只有SQL Server Express可以访问SM。这意味着除非启用TCP和/或NP,否则从远程计算机到SQL Server Express的连接将失败。如果要使用TCP和NP,则必须明确打开它们。使用SQL Server配置管理器为服务器和客户端显式启用TCP和NP。启用TCP和NP后,您需要启动SQL Browser服务(请参阅下面的SQL浏览器)。
如果要远程连接,则需要将“(local)”替换为服务器的IP地址。如果DNS可以解析名称,您还可以使用服务器名称而不是IP地址。
如果您通过特定的IP地址进行连接,请确保为其启用连接。在SQL配置管理器中,展开“SQL Server 2005网络配置”节点,然后从右侧窗格中选择“TCP / IP属性”。选择“IP地址”选项卡,然后将“已启用”更改为“是”以获取特定IP地址。
SQL Server配置管理器
SQL Server 2005和SQL Server Express中的SQL Server配置管理器取代了客户端网络实用工具和服务器网络实用工具。它允许您配置SQL Server侦听的协议以及ADO.NET 2.0应用程序可以使用的协议。但是,要为使用ADO而不是ADO.NET 2.0的应用程序配置客户端协议,您仍需要使用客户端网络实用程序。客户端网络实用程序附带ADO,是Windows 2000,Windows XP和Windows 2003的一部分。
要远程连接到SQL Server Express,请确保服务器可以侦听TCP连接。从SQL Server配置管理器,展开“SQL Server 2005网络配置”并导航到“SQL Server Express的协议”,然后启用TCP。您需要重新启动服务器才能使更改生效。
如果您使用的是Teratrax数据库管理器,则可以通过单击连接对话框中的“客户端网络实用程序”按钮来配置客户端协议。确保您满足Teratrax数据库管理器(Windows 2000,Windows XP或Windows 2003)的操作系统要求。
SQL Server浏览器
SQL Browser是SQL Server 2005中的一项新服务,用于标识命名实例侦听的端口。 SM协议不使用此服务。默认情况下,此服务在SQL Server Express中处于关闭状态。这意味着用户必须启动此服务,以便远程访问可以工作。您可以从Service Manager启动SQL Browser服务,也可以从命令行键入“NET START SQLBROWSER”。
SQL浏览器侦听UDP端口1434.但是,保存端口UDP 1434的SQL Server 2000之前的SP3版本可能会导致SQL浏览器名称解析失败,因为它们可能会拒绝放弃该端口。解决方法是将计算机上的所有SQL Server 2000 / MSDE实例升级到SP3或更高版本。
答案 1 :(得分:0)
当SQL Server服务未在远程计算机上运行时会发生这种情况
答案 2 :(得分:0)
您可能还希望确保sql server实例允许远程连接
答案 3 :(得分:0)
我已经完成了telnet测试 看看港口前进是否有效 正确,它告诉我 连接被拒绝。
然后,以下之一为真: