最近的一个项目(Asp.net SQL Server 2000)在最初开发的机器上运行没有任何问题。但是,当我在另一台机器上调试程序(本地调试)时,总是出现“SQL Server不存在或访问被拒绝”。相信你在任何一个搜索网站输入这样一个搜索词,一定会得到N多页。
综上所述,SQL Server连接中四个最常见错误的解决方案如下:
I.' SQL Server不存在或访问被拒绝'
这是最复杂的,出错的原因很多,要查的方面也很多。
一般来说,有以下几种可能:
1,SQL Server名称或IP地址拼写错误
2.服务器端网络配置错误。
3.客户端网络配置错误。
要解决这个问题,我们一般按照以下步骤一步一步找出错误的原因。
=========首先,检查网络物理连接=========
Ping服务器IP地址/服务器名称
如果ping服务器的IP地址不成功,则表明物理连接有问题。此时,检查硬件设备,如网卡、集线器、路由器等。
另一种可能是在客户端和服务器之间安装了防火墙软件,如ISA服务器。防火墙软件可能会阻止对ping、telnet等的响应。
所以在检查连接问题时,我们不得不暂时关闭防火墙软件,或者打开所有关闭的端口。
如果ping服务器的IP地址成功,但ping服务器名称失败。
那么名字解析就有问题了。此时,检查DNS服务是否正常。
有时,客户端和服务器不在同一个局域网中。此时,服务器名称不能直接用于识别服务器。此时,我们可以使用HOSTS文件进行名称解析。
具体方法是:
1.使用记事本打开主机文件(通常位于C:\WINNT\system32\drivers\etc)。
添加IP地址和服务器名称的对应记录,例如:
172.168.10.24米服务器
2.或者在SQL Server的客户端网络实用工具中配置,后面会详细说明。
===========其次,使用telnet命令检查SQL Server的工作状态==========
Telnet服务器IP地址1433
如果命令执行成功,可以看到屏幕闪烁后左上角的光标一直闪烁,说明SQL Server服务器工作正常,正在监控1433端口的TCP/IP连接。
如果该命令返回错误消息“无法打开连接”,则意味着服务器尚未启动SQL Server服务。
可能是服务器端没有启用TCP/IP协议,或者服务器端没有监听SQL Server的默认端口1433。
===========接下来,我们要检查服务器端的网络配置,看看是否启用了命名管道。TCP/IP协议是否启用等。===========
可以使用SQL Server自带的服务器网络工具进行检查。
单击:程序- Microsoft SQL Server -服务器网络工具
打开此工具后,您可以看到服务器通常启用了哪些协议。
一般来说,我们启用命名管道和TCP/IP协议。
单击TCP/IP协议并选择“属性”来检查SQK Server服务的默认端口设置。
一般来说,我们使用SQL Server的默认端口1433。如果选择了“隐藏服务器”,则意味着客户端无法通过枚举服务器来查看此服务器,这将起到保护作用,但不会影响连接。
===========接下来,我们将前往客户端检查客户端的网络配置=========
我们还可以利用SQL Server自己的客户端网络使用工具来检查,
不同之处在于,这次工具是在客户端上运行的。
单击:程序- Microsoft SQL Server -客户端网络工具
打开该工具后,您可以在“常规”项中看到客户端启用了哪些协议。
一般来说,我们还需要启用命名管道和TCP/IP协议。
单击TCP/IP协议并选择“属性”以检查客户端默认连接端口的设置,该端口必须与服务器一致。
单击“别名”选项卡,您还可以为服务器配置别名。服务器的别名是用于连接的名称。
连接参数中的服务器是真实的服务器名,可以相同也可以不同。别名的设置类似于使用主机文件。
通过以上几个方面的检查,基本可以排除第一个错误。
二。“无法连接到服务器,用户xxx登录失败”
出现此错误的原因是SQL Server使用“仅Windows”身份验证方法,
因此,用户无法使用SQL Server的登录帐户(如sa)进行连接。解决方案如下:
1.使用服务器端的企业管理器,并选择“使用Windows身份验证”连接到SQL Server。
2.展开“SQL Server组”,右键单击SQL Server的名称,选择“属性”,然后选择“安全”选项卡。
3.在“身份验证”下,选择“SQL Server和Windows”。
4.重新启动SQL Server服务。
在上面的解决方案中,如果在步骤1中使用Windows身份验证未能连接到SQL Server,
然后通过修改注册表来解决这个问题:
1.点击'开始'-'运行'进入regedit,进入注册表编辑器。
2.依次展开注册表项,并浏览至以下注册表项:
[HKEY _ LOCAL _ MACHINE \ SOFTWARE \ Microsoft \ MSSQL server \ MSSQL server]
3.在屏幕右侧找到名称“LoginMode ”,双击编辑双字节值。
4.将原始值从1更改为2,然后单击“确定”。
5.关闭注册表编辑器
6.重新启动SQL Server服务。
此时,用户可以通过使用sa在企业管理器中成功创建一个新的SQL Server注册。
但是,您仍然不能使用Windows身份验证模式连接到SQL Server。
这是因为SQL Server中有两个默认登录帐户:
内置\管理员
名称\Administrator已被删除。
要恢复这两个帐户,可以使用以下方法:
1.打开企业管理器,展开服务器组,然后展开服务器。
2.展开安全性,右键单击登录,然后单击新建登录。
3.在“名称”框中,输入BUILTIN\Administrators
4.在“服务器角色”选项卡中,选择“系统管理员”
5.单击“确定”退出。
6.使用相同的方法添加机器名\管理员登录。
描述:
以下注册表项:
HKEY _ LOCAL _ MACHINE \ SOFTWARE \ Microsoft \ MSSQL server \ MSSQL server \ log in mode
的值决定了SQL Server将采用的身份验证模式。
1.表示使用“Windows身份验证”模式。
2.它意味着使用混合模式(Windows身份验证和SQL Server身份验证)。
3.提示连接超时
如果遇到第三个错误,一般意味着客户端已经找到了这个服务器,可以连接了。
但是,连接时间超过了允许的时间,从而导致错误。
当用户在互联网上运行企业管理器以注册另一台也在互联网上的服务器时,通常会发生这种情况。
而且是慢速连接的时候,可能会导致上面的超时错误。在某些情况下,也可能由于局域网的网络问题而导致这样的错误。
要解决此错误,您可以修改客户端的连接超时设置。
默认情况下,通过企业管理器注册另一个SQL Server的超时设置是4秒。
查询分析器是15秒(这也是企业管理器出错的可能性比较高的原因)。
具体步骤如下:
企业管理器中的设置:
1.在企业管理器中,选择菜单上的“工具”,然后选择“选项”
2.在弹出的“SQL Server企业管理器属性”窗口中,单击“高级”选项卡
3.在“连接设置”下“登录超时(秒)”右侧的框中输入一个较大的数字,如20。
查询分析器中的设置:
工具-选项-连接-将登录超时设置为一个较大的数字。
4.大多数扩展使用Tcp/ip才能成功。有一次我发现可以用命名管道?
这是因为在Windows 2000之后的操作系统中,MS配置了TCP/IP来解决SQL SERVER的安全问题。
作为SQLSERVER的默认连接协议,可以在客户端网络实用工具中看到TCP/IP和NAME PIPE。
的顺序。
您还可以访问:
[HKEY _ LOCAL _ MACHINE \ SOFTWARE \ Microsoft \ MSSQL server \ Client \ supersocket netlib]
ProtocolOrder'=hex(7):74,00,63,00,70,00,00,00,00,00
请参见默认协议。
2.如何在程序中更改命名管道、Tcp/ip,如何编写其sql语句?
您可以在上面提到的注册表位置修改它:
客户端:
[HKEY _ LOCAL _ MACHINE \ SOFTWARE \ Microsoft \ MSSQL server \ Client \ super socket netlib]
ProtocolOrder'=hex(7):74,00,63,00,70,00,00,00,00,00
计算机网络服务器端:
[HKEY _ LOCAL _ MACHINE \ SOFTWARE \ Microsoft \ MSSQL server \ MSSQL server \ supersocket netlib]
ProtocolOrder'=hex(7):74,00,63,00,70,00,00,00,00,00
我的问题应该属于第一类,遗憾的是我按照上面说的方法都不能解决这个问题。我使用:telnet服务器互联网协议(互联网协议)地址1433 显示不能正确连接。按照说的方法也不能解决这个问题。有网友说出现1433端口不能连接的因为是sql server 2000没有打补丁的缘故,但我打过sp4后仍然不能正确连接1433端口。
我在网页配置里的设置为:
配置
appSettings
!- '数据源=SASANK初始目录=编码器;坚持安全信息=假用户id=sa工作站id=SASANK数据包大小=4096' -
add key=' ConnectionString ' value=