中国自动化学会专家咨询工作委员会指定宣传媒体
免费注册 登录 广告服务 | 客服中心
您现在所在的是:

电脑编程

抖音 德嘉 泓格论坛 FLIR红外热像论坛
工控论坛首页 电脑编程 → 浏览主题: 访问SQL Server实例的常见问题(转)
发表新帖 回复该主题
回帖:0个,阅读:1547 [上一页] [1] [下一页]
* 帖子主题:

访问SQL Server实例的常见问题(转)

分享到
843
xdq337007
文章数:57
年度积分:50
历史总积分:843
注册时间:2009/9/8
发站内信
发表于:2009/9/8 20:24:02
#0楼
访问SQL Server实例的常见问题
 要使用SQL Server数据库,首先需要连接到SQL Server实例,如果不能连接到SQL Server实例,那么就无法使用SQL Server数据库.
 SQL Server2000支持SQL Server实例和客户端应用程序间的多种通信方式.当客户端应用程序和SQL Server实例位于同一台计算机时,Microsoft windows处理间的通信(IPC)部件(例如本地命名管道或共享内存协议)将被用于通信.如果客户端应用程序和SQL Server实例位于不同计算机上,那么一个网络IPC(例如TCP/IP或命名管道)将被用于通信.
 SQL Server2000使用Net-Library与特定的网络协议进行通信.一对匹配Net-Library必须在客户端计算机上激活,而且在支持待用网络协议的服务器计算机上也必须是激活的.例如,如果客户应用程序通过TCP/IP与某个特定的SQL Server实例通信,那么客户端的TCP/IP套接字Net-Library(Dbnetlib.dll)就必须配置为连接到客户端计算机的服务器.同样,服务器TCP/IP套接字Net-Library(Ssnetlib.dll)必须侦听服务器计算机.如果客户端与服务器没有匹配的Net- Library,或者没有匹配的网络协议,则客户端应用程序无法连接到SQL Server实例.

一.连接失败
连接SQL Server实例失败时,最常见的错误是”连接服务器XXX失败, SQL Server不存在或拒绝访问”.
引起这种问题的原因很多,初学者最易犯的错误是没有启动MSSQLSERVER服务,SQL Server安装后,应该检查MSSQLSERVER服务是否启动,如果需要,最好将其设置为自动启动.检查MSSQLSERVER服务是否启动的步骤如下:
(1)    在SQL Server服务器中,打开SQL Server服务管理器.单击【开始】→【程序】→【Microsoft SQL Server】→【服务管理器】菜单命令.
(2) 在打开的【SQL Server服务管理器】对话框中,单击【服务器】下拉列表框,选择要检查的SQL Server实例名【DEV】,单击【服务】下拉列表框,选择【SQL Server】选项,如此时【暂停】与【停止】按钮可用,说明MSSQLSERVER服务已启动,如图所示.
                 
(3) 如果需要,在【SQL Server服务管理器】对话框中, 选择【当启动OS时自动启动服务】选择框,让MSSQLSERVER服务随操作系统启动而启动.
1. Net-Library与协议问题
(1)要保证客户端能正常访问SQL Server实例,首先要保证在网络是畅通的,最简单的方法是在操作系统中,通过网上邻居访问SQL Server实例所在服务器的共享资源,如果能访问,可以证明网络是通的.
(2)要注意Net-Library的匹配问题,如果客户端与SQL Server实例采用不匹配的Net-Library,那么客户端无法连接到SQL Server实例.可以通过服务器网络实用工具配置SQL Server实例上Net-Library,使用客户端网络实用工具配置客户端使用的Net-Library.
(3)如果使用TCP/IP通信,需要注意端口的问题.
  服务器端必须在特定的端口上侦听(默认为1433),要检查服务器是否在侦听指定的端口,可以按照以下操作步骤.
a.       单击【开始】→【运行】菜单命令,在【运行】对话框的【打开】文本框中输入”cmd”.
b.       在命令提示符下,执行NETSTAT-an命令.
c.       查询结果中有无Proto为TCP、Local为指定端口号、State为LISTENING的项.客户端可以通过执行Telnet程序,验证是否可以连到SQL Server正在侦听的端口,具体操作如下.
a.       单击【开始】→【运行】菜单命令,在【运行】对话框的【打开】文本框中输入”cmd”.
b.       在命令提示符下,执行下例命令(IP Address是SQL Server实例所在服务的IP地址,Port Number是服务端设置的侦听端口):
Teclnet <IP Address> <Port Number>
如果Teclnet程序没有成功,则根据收到的错误信息作相应的处理.如果网络中有防火墙,则应该检查防火墙是否阻止了该端口的通信.如果通过Internet连接,验证失败时,应该咨询网络服务供应商该端口是否被限制.
客户端连接时,必须使用服务器端配置的端口.如果未在客户端中做端口配置,可能在应用程序连接时, 直接指定连接使用的端口号,方法是在连接的SQL Server实例名后使用逗号加端口号.例如连接服务器名为Server,端口号为123的SQL Server实例时,应指定服务名为Server,123.
(4) Net-Library必须与特定的网络协议一起使用.比如,TCP/IP套接字Net-Library应该配置TCP/IP网络协议使用。如果Net- Library没有与之对应的网络协议,则客户端与服务器端使用配置的Net-Library也无法完成通信。
(5)如果使用服务器名连接,要注意DNS解析的问题。
域名系统(DNS)中的名称解析过程用于解析SQL Server实例名称的IP地址。如果名称解析过程工作不正常,就不能获得SQL Server实例,可以通过下面的步骤验证名称解析过程是否正确。
a. 单击【开始】→【运行】菜单命令,在【运行】对话框的【打开】文本框中输入”cmd”.
b. 在命令提示符下,运行下列命令(Server Name是SQL Server实例的服务器名),并记录返回的IP地址。
  Ping <server name>
c.       在命令提示符下,运行下列命令(IP adderss是步骤b中记录的IP地址)。
Ping  -a  <IP Address>
如果两个指定的命令有任何一个不成功、超时或没有返回正确的值,那么说明DNS查找未能正常工作。或者有其他网络或路由问题引发的问题。
2.注意MDAC问题
MDAC的问题也可能会引起连接的问题。例如,安装一个软件可能会覆盖一些MDAC文件或更改权限,而用户需要这些权限才能访问MDAC文件。
要访问SQL Server命名实例,要求客户端安装的是MDAC2.6或更新的版本。MDAC的早期版本不识别SQL Server的命名实例。因此,可能无法连接到命名实例。
3.注意思防火墙的问题
  SQL Server是Winsock应用程序,它使用套接字网络库通过TCP/IP进行通信。SQL Server侦听特定端口上(默认是1433,可以通过服务网络实用工具修改)的传入连接。
 在客户端建立TCP/IP连接时,执行三向的握手。客户端打开一个源端口并向目标端口(默认情况下是1433)发送通信量。使用中的客户端源端口是随机的,但它大于1024。默认情况下,在应用程序从系统为传出呼叫请求套接字时,提供介于值1024—5000之间的端口。SQL Server通过来自1433的通信量发送回该客户端建立的端口,与客户端进行通信。形成1433(服务器默认端口) →ANY(客户端源端口)的连接。
  防火墙软件应该通过使用规则允许进行此动态分配。没有任何方法可以限制用于要连接的SQL Server客户端的源TCP端口的数目。
二.用户登录失败
  用户登录是指连接SQL Server实例时,收到类似这样的错误信息“无法连接到服务器,用户XXX登录失败”。
  出现这种问题时,证明已经可以连接到SQL Server实例,只是身份验证出了问题:
(1)    指定了错误的登录名或者密码。比如在区分大小写的SQL Server实例中,指定登录名和密码时,没有区分大小定。
(2)    身份验证模式问题。
a.       登录身份使用“Windwos身份证”时,登录系统的当前用户没获得登录SQL Server的权限。
b.       使用SQL Server用户登录,但SQL Server的身份验证模式为“仅为WINDOWS”时,将禁止SQL Server用户登录。
要查看或者修改SQL Server实例的身份验证模式,可以在企业管理器中完成。
如果无法从企业管理器中查看SQL Server属性,也可以在通过查询注册表来查询或者配置SQL Server实例的身份验证模式。
单击【开始】→【运行】菜单命令,在【运行】对话框的【打开】文本框中输入“regedit”
单击【确定】按扭,打开【注册表编辑器】,在左侧的窗格中找到如下项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer其中的LoginMode键代表了SQL Server的身份验证模式:
1,  表示使用“仅用Windows身份验证”。
2,  表示使用混合身份验证(SQL Server身份验证和Windows身份验证)。
        如果需要修改LoginMode的值,修改完成后,应重启MSSQLSERVER服务使修改生效。
       说明:在SQL Server登录中,有一个特殊的登录:BUIL TIN\Administrators,这个是默认的Administrators组用户访问SQL Server实例的登录,如果该登录被删除或者禁用,则即使允许使用Windows身份验证,Adminisrators组的用户也无法访问SQL Server实例,除非在SQL Server中重新添加此登录,或者为要访问SQL Server实例的Windows用户建立专门的登录。
三.测试连接到SQL Server实例的方法总结
如果连接SQL Server实例失败,除了通过错误信息分析连接失败原因外,还可以通过
多种方法进一步确定故障原因。
(1)    使用SQL Server身份认证和Windows身份认证测试到SQL Server实例的连接。
(2)  从其他数据源测试到SQL Server实例的连接。
(3)  使用其他协议测试到SQL Server实例的连接。可以通过客户端网络实用工具,为使用该协议的SQL Server实例创建一个新的别名,从而指定不同的协议。还可以通过在SQL Server实例名称的开始处添加tcp:、np:、lpc:、或rcp:来指定连接字符串中的协议。
(4)  使用其他登录账户测试连接,这样可以确定该问题是否与某个特定的登录账户有关。
(5)  在%systemroot%\system32\drivers\etc\hosts文件中添加一个与正在运SQL Server实例的计算机的IP地址相应的秒目。
(6)  尝试从运行SQL Server的计算机和客户端连接到SQL Server实例。
(7)  如果正从运行SQL Server的计算机进行连接,可以指定“.”或“(Local)”,或者不指定服务器名称,用以取代服务器名称进行连接。
(8)  尝试使用学IP地址而不是服务器名称边接到SQL Server实例。
(9)  尝试指定SQL Server实例正在侦听的特定端口。有两种方法:通过客户端网络实用工具创建一个别名,或将一个端口号添加到连接字符串(例如MyServer/MyInstance,1433)
工控学堂推荐视频:

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

46.8003