电脑计算机论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2724|回复: 0

解决MS SQL Server 2005 无法远程连接问题

[复制链接]
admin 发表于 2010-5-18 22:09:08 | 显示全部楼层 |阅读模式
在Windows 2003 sp1服务器上缺省安装 MS SQL Server 2005 简体中文企业版,在连接服务器时显示“不允许远程连接”。

具体显示如下:(xxxxxsql为服务器名,在本地操作)
C:\Documents and Settings\Administrator>sqlcmd -S xxxxxsql
HResult 0x2,级别 16,状态 1
命名管道提供程序: 无法打开与 SQL Server 的连接 [2].
Sqlcmd: 错误: Microsoft SQL Native Client : 建立到服务器的连接时发生错误。连接到
SQL Server 2005 时,默认设置 SQL Server 不允许远程连接这个事实可能会导致失败。

Sqlcmd: 错误: Microsoft SQL Native Client : 登录超时已过期。

解决办法:
1.查看端口,发现没有1433(SQL server的缺省端口)
C:\Documents and Settings\Administrator>netstat -ano

Active Connections

Proto Local Address          Foreign Address        State           PID
TCP    0.0.0.0:21             0.0.0.0:0              LISTENING       2900
TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       3672
TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       936
TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
TCP    0.0.0.0:1025           0.0.0.0:0              LISTENING       656
TCP    0.0.0.0:1030           0.0.0.0:0              LISTENING       2900
TCP    0.0.0.0:1037           0.0.0.0:0              LISTENING       3296
TCP    0.0.0.0:3389           0.0.0.0:0              LISTENING       620
TCP    1x.xx.xx.18:139        0.0.0.0:0              LISTENING       4
TCP    1x.xx.xx.18:3389       1x.xx.xx.44:1116       ESTABLISHED     620
TCP    127.0.0.1:1038         0.0.0.0:0              LISTENING       3296
UDP    0.0.0.0:445            *:*                                    4
UDP    0.0.0.0:500            *:*                                    656
UDP    0.0.0.0:1434           *:*                                    2380
UDP    0.0.0.0:2967           *:*                                    1772
UDP    0.0.0.0:3456           *:*                                    2900
UDP    0.0.0.0:4500           *:*                                    656
UDP    1x.xx.xx.18:123        *:*                                    1096
UDP    1x.xx.xx.18:137        *:*                                    4
UDP    1x.xx.xx.18:138        *:*                                    4
UDP    127.0.0.1:123          *:*                                    1096
UDP    127.0.0.1:1027         *:*                                    1096
UDP    127.0.0.1:3456         *:*                                    2900

2.进入SQL Server Configuration Manager,查看配置
SQL Server 配置管理器(本地)
->SQL Server 2005 网络配置
->HLHEBSQL 的协议
-> TCP/IP

右键->属性

发现服务器地址IP1,未启用,端口使用的是动态端口。
按如下更改后,重新启用SQL Server服务。
注意:一定要IPALL的TCP动态端口删除,TCP端口改为1433,只改IP1不好用,在这个问题很多网上的解决办法都没有明确,走了很多的弯路!


3.     重新查看端口,可以看到1433已经打开
C:\Documents and Settings\Administrator>netstat -ano

Active Connections

Proto Local Address          Foreign Address        State           PID
TCP    0.0.0.0:21             0.0.0.0:0              LISTENING       2900
TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       3672
TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       936
TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
TCP    0.0.0.0:1025           0.0.0.0:0              LISTENING       656
TCP    0.0.0.0:1030           0.0.0.0:0              LISTENING       2900
TCP    0.0.0.0:1433           0.0.0.0:0              LISTENING       1532
TCP    0.0.0.0:3389           0.0.0.0:0              LISTENING       620
TCP    1x.xx.xx.18:139        0.0.0.0:0              LISTENING       4
TCP    1x.xx.xx.18:3389       1x.xx.xx.44:1116       ESTABLISHED     620
TCP    127.0.0.1:1038         0.0.0.0:0              LISTENING       1532
UDP    0.0.0.0:445            *:*                                    4
UDP    0.0.0.0:500            *:*                                    656
UDP    0.0.0.0:1434           *:*                                    2380
UDP    0.0.0.0:2967           *:*                                    1772
UDP    0.0.0.0:3456           *:*                                    2900
UDP    0.0.0.0:4500           *:*                                    656
UDP    1x.xx.xx.18:123        *:*                                    1096
UDP    1x.xx.xx.18:137        *:*                                    4
UDP    1x.xx.xx.18:138        *:*                                    4
UDP    127.0.0.1:123          *:*                                    1096
UDP    127.0.0.1:1027         *:*                                    1096
UDP    127.0.0.1:3456         *:*                                    2900

4. 重新执行SQLCMD,成功
C:\Documents and Settings\Administrator>sqlcmd -S xxxxxsql

刚刚安装的数据库系统,按照默认安装的话,很可能在进行远程连接时报错,通常是错误:"在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接) "搜MSDN,上面有一片机器翻译的文章,是在让人难以明白,现在总结如下:明白了SQL Server是个网络数据库就可迎刃而解了,简单的分为下面的集中情况。

1. 数据库引擎没有启动。

有两种启动方式:

(1)开始->程序->Microsoft SQL Server 2005->SQL Server 2005外围应用配置器,在打开的界面单击"服务的连接的外围应用配置器",在打开的界面中找到Database Engine,单击"服务",在右侧查看是否已启动,如果没有启动可单击"启动",并确保"启动类型"为自动,不要为手动,否则下次开机时又要手动启动;

(2)可打开:开始->程序->Microsoft SQL Server 2005->配置工具->SQL Server Configuration Manager,选中SQL Server 2005服务中SQL Server(MSSQLSERVER) ,并单击工具栏中的"启动服务"按钮把服务状态改为启动;

使用上面两种方式时,有时候在启动的时候可能会出现错误,不能启动,这时就要查看"SQL Server 2005配置管理器"中的SQL Server 2005网络配置->MSSQLSERVER协议中的VIA是否已启用,如果已启用,则把它禁止.然后再执行上述一种方式操作就可以了.

2. 是否已经允许远程连接。

这个部分可以简单的分为4个方面,分别是在 SQL Server上启用远程连接、启用SQL Server 浏览服务、在Windows 防火墙中为SQL Server 2005 创建例外和在Windows 防火墙中为“SQLBrowser”创建例外。下面是几个具体的操作方式,摘自MSDN,个人觉得文章的黑体部分应当特别的一起我们的注意。


在SQLServer 实例上启用远程连接
1.指向“开始->程序->Microsoft SQL Server 2005->配置工具->SQL Server 外围应用配置器”
2.在“SQL Server 2005 外围应用配置器”页, 单击“服务和连接的外围应用配置器”
3.然后单击展开“数据库引擎”,选中“远程连接”,在右边选中“本地连接和远程连接”,
再选择要使用的协议,( 这个地方应当启用TCP/IP 和命名管道服务!)单击“应用”,您会看到下消息:
“直到重新启动数据库引擎服务后,对连接设置所做的更改才会生效。”,单击“确定”按钮返回
4.展开“数据库引擎”,选中“服务”,在右边单击“停止”,等到 MSSQLSERVER 服务停止,
然后单击“启动”,重新启动MSSQLSERVER 服务。

启用 SQLServer 浏览器服务
1.指向“开始->程序->Microsoft SQL Server 2005->配置工具->SQL Server 外围应用配置器”
2.在“SQL Server 2005 外围应用配置器”页, 单击“服务和连接的外围应用配置器”
3.然后单击展开“SQL Server Browser”,选中“服务”,在右边“启动类型”选择“自动”,
再单击“启动”,单击“确定”按钮返回

在Windows 防火墙中为“SQL Server 2005”创建例外
1.在 Windows 防火墙设置界面中,选择“ 例外” 选项卡,然后单击“添加程序”
2.在“添加程序窗口”中单击“浏览”
3.然后找到“C:\ProgramFiles\Microsoft Files\Microsoft SQL Server\ MSSQL.1 \MSSQL\Binn\sqlservr.exe”,
单击“确定”返回
注意 : 路径可能会根据 SQL Server 2005 安装不同而不同。 MSSQL.1 是占位符,对应数据库实例ID。
4.对每个需要打开远程访问的SQL Server 2005 实例,重复步骤 1 至 3。

在Windows 防火墙中为“SQLBrowser”创建例外
1.在 Windows 防火墙设置界面中,选择“ 例外” 选项卡,然后单击“添加程序”
2.在“添加程序窗口”中单击“浏览”
3.然后找到“C:\ProgramFiles\Microsoft Files\Microsoft SQL Server\90\Shared\sqlbrowser.exe”,
单击“确定”返回
注意 : 路径可能会根据 SQL Server 2005 安装不同而不同。


在使用.NET开发进行时,会遇到使用连接字符串连接SQL Server 2005数据库使用机器名称和localhost都能连接,但是使用IP地址却不能连接的问题,解决的办法是在SQL Server实例上启用本地和远程连接,并且在选择协议的时候使用TCP/IP和命名管道服务即可解决。
您需要登录后才可以回帖 登录 | 注册

本版积分规则


QQ|手机版|小黑屋|电脑计算机论坛 ( 京ICP备2022023538号-1 )

GMT+8, 2024-11-23 19:43 , Processed in 0.091493 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表