Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net ASP SQL连接被拒绝,必要的端口已打开_Asp.net_Sql_Ado.net_Ado - Fatal编程技术网

Asp.net ASP SQL连接被拒绝,必要的端口已打开

Asp.net ASP SQL连接被拒绝,必要的端口已打开,asp.net,sql,ado.net,ado,Asp.net,Sql,Ado.net,Ado,我正在尝试开发一个到MSSQL 2005服务器的ASP SQL连接。SQL server是主域服务器后面的一个子服务器,因此已从端口1433上的WAN>LAN设置了一个端口转发,以允许流量访问第二台服务器 我已经在我的终端上做了一个telnet测试,看看端口转发是否正常工作,它告诉我连接被拒绝。运行脚本时,我得到以下结果: SQL Server的Microsoft OLE DB提供程序错误“80004005” [DBNETLIB][ConnectionOpen(Connect())。]SQL S

我正在尝试开发一个到MSSQL 2005服务器的ASP SQL连接。SQL server是主域服务器后面的一个子服务器,因此已从端口1433上的WAN>LAN设置了一个端口转发,以允许流量访问第二台服务器

我已经在我的终端上做了一个telnet测试,看看端口转发是否正常工作,它告诉我连接被拒绝。运行脚本时,我得到以下结果:

SQL Server的Microsoft OLE DB提供程序错误“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
%>


感谢

当SQL Server服务未在远程计算机上运行时,会发生这种情况

此外,请在“Microsoft SQL Server 2005”/“配置工具”下的“开始”菜单中检查表面积配置,以确保启用了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 edition作为命名实例(SQLEXPRESS)安装。这意味着您需要从本地计算机使用(本地)\SQLEXPRESS访问它。没有前缀的SQLEXPRESS将无法工作。您还可以在本地计算机上使用127.0.0.1 IP地址,以避免与DNS相关的问题

要验证服务是否正在运行,请在命令提示符下键入sqlcmd–S(local)\SQLEXPRESS。如果您看到“1>,则表示您已成功连接。键入exit退出sqlcmd程序

连接协议

SQLServer2005支持许多用于将客户端应用程序与数据库服务器连接的协议。这些协议是TCP、命名管道(NP)、共享内存(SM)、VIA和HTTP。SQL Server Express中仅支持TCP、NP和SM

默认情况下,本地计算机上的SQL Server Express只能访问SM。这意味着,除非启用TCP和/或NP,否则从远程计算机到SQL Server Express的连接将失败。如果要使用TCP和NP,则必须显式地启用它们。使用SQL Server Configuration Manager为服务器和客户端显式启用TCP和NP。启用TCP和NP后,需要启动SQL浏览器服务(请参见下面的SQL浏览器)

如果是远程连接,则需要用服务器的IP地址替换“(本地)”。如果DNS可以解析名称,您也可以使用服务器名称而不是IP地址

如果您是通过特定的IP地址连接,请确保为其启用连接。在SQL Configuration Manager中,展开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。您需要重新启动服务器,更改才能生效

如果您使用的是Tertrax数据库管理器,则可以通过单击连接对话框中的“客户端网络实用程序”按钮来配置客户端协议。确保满足Tertrax数据库管理器(Windows 2000、Windows XP或Windows 2003)的操作系统要求

SQL Server浏览器

SQL Browser是SQL Server 2005中的一项新服务,用于标识命名实例侦听的端口。SM协议不使用此服务。默认情况下,此服务在SQL Server Express中关闭。这意味着用户必须启动此服务,才能进行远程访问。您可以从服务管理器启动SQL Browser服务,也可以从命令行键入“NET start SQLBROWSER”


SQL浏览器侦听UDP端口1434。但是,保留端口UDP 1434的SQL Server 2000 SP3之前版本可能会导致SQL浏览器名称解析失败,因为它们可能会拒绝放弃该端口。解决方法是将计算机上的所有SQL Server 2000/MSDE实例升级到SP3或更高版本。

您可能还需要确保SQL Server实例允许远程连接

我已经在周末做了一个远程登录测试 查看前向端口是否工作 正确,它告诉我 连接被拒绝

那么,以下情况之一是正确的:

  • 端口转发不起作用
  • SQL主机防火墙正在阻止端口(1433)
  • 没有进程监听1433的目标:
    • SQL server已停止或停止
    • SQL未配置为使用TCP或
    • SQL主机有多个IP,SQL TCP未侦听来自转发器或服务器的入站IP
    • SQL server在网络上侦听