经常有人反映说SQL Server 客户端连接不上。现在将这类问题归纳如下:
一、SQL Server 实例(服务)未启动
打开“SQL Server 配置管理器”(或者“管理工具”中的“服务”),检查对应的实例(服务)的状态是否为“正在运行”(或者“已启动”)。如果该实例没有启动(甚至客户端在连接时使用了错误的主机名和实例名),这个时候客户端当然连接不到SQL Server数据库了。
二、网络通讯协议未启用
如果客户端使用网络协议去连接SQL Server,那么就要求SQL Server的实例(服务)也要启用相应的网络协议。一般可能出现有2种状况:
1. 发现在SQL Server本机可以访问,但是客户端不行。这是因为,从SQL Server 2005开始,本地访问时默认使用Shared Memory(可以理解为直接去内存中访问),而远程客户端是不可能使用Shared Memory的。
2. 修改了网络配置,启用了TCP/IP协议,可是没有重启SQL Server 实例(服务),没有生效。
三、TCP/IP端口配置
对于TCP/IP协议,请注意端口的配置。
1. 是否“全部侦听”
如下图,此时“协议”选项卡的“全部侦听”为“是”,表示本机所有的网卡都使用同一个端口。
如果“全部侦听”设置为“否”,那么这台服务器的每一块网卡都可以独立配置“TCP端口”以及“已启用”。
2. 动态端口
如果“TCP动态端口”设为0,那么将使用动态端口。
由于动态端口在每次启用SQL Server实例(服务)时都可能改变,所以客户端访问时将自动向这台服务器的UDP 1434端口查询,询问对应的SQL Server实例(服务)的当前端口。UDP 1434对应的服务是SQL Server Browser,它负责向客户端返回其查询的SQL Server实例(服务)对应的TCP端口。
四、防火墙
由于Windows 2008及后续版本增强了安全性,因此在安装SQL Server时并不会自动打开防火墙端口。
关于防火墙的配置,请参考 http://jimshu.blog.51cto.com/3171847/590411 “三、为SQL Server 开放端口”。
五、帐户与密码错误
1. 访问权限的问题
客户端访问时使用的某个帐户没有权限,当然也就不能访问 SQL Server。
2. 帐户被禁用
3. 如果是SQL帐户登录
如果在安装SQL Server时就指定身份验证模式为“混合模式”,那么就可以允许SQL Server帐户,否则只允许Windows帐户。
安装完成之后,如果要修改身份验证模式,可以通过SQL Server Management Studio修改。修改后需要重启该SQL Server实例(服务)才会生效。
本文出自 “我们一起追过的MSSQL” 博客,谢绝转载!