sql数据库连接失败,急!!(一台服务器上有两个实例,其中一个可以连接上,另一个不可以)。为什么? ( 积分: 50 )

  • 主题发起人 主题发起人 lanny_luo
  • 开始时间 开始时间
L

lanny_luo

Unregistered / Unconfirmed
GUEST, unregistred user!
如题。服务器没有设置域。用sa帐户访问的。<br>第一个数据库实例可以从另外的电脑访问,第二个实例提示:sql&nbsp;server&nbsp;不存或是访问被拒绝。<br>网上看了好多资料,不过都是服务器不通的那种。没有看到我两个实例的。谢谢。
 
可能就是设置的问题吧?<br><br>好好查查!
 
晕,这是什么回答?<br>对了,第一个的tcp/ip端口是1433<br>第二个的是1533<br>是否要两个都是1433??
 
没人回答吗?在线等.想不明白.
 
我们公司也是的,我自己建了一个SQL&nbsp;Server服务器,有的人可以正常访问,有的人就不行。<br>后来的办法是,在不行人的机器上,在ODBC里,建一个连接到我的SQL&nbsp;Server上面,传输方式选择通道方式,而不是TCP方式,这样软件就可以正常运行了。不知道为什么会这样。
 
唉,可是现在是别人的软件啊.我怎么能改ODBC呢.我们只是使用而已了.<br>对了,我怎么样可以测试从一台机到服务器的sql实例是连通的呢.<br>还有多个实例的tcp/ip端口是否都应是1433<br>目前这个一个是1433&nbsp;OK的那个,另一个是1533不过用这个的话现在是有机子是通的.新装的就是不通.服务器没有设域.
 
没有吧.没有连外网呢.不过也再杀杀看.
 
没有中毒哈.好晕哦.
 
好,我再在另一个电脑上测一下.请路过的同仁,知道的讲一下哈.在线等.
 
你可能误会我的意思了。<br>你去ODBC里面配置,这个与软件无关,而起里面可以测试是否连接SQL成功。我说的方法是你在配置中间有一个选项,你要选择通道,而不是TCP/IP.
 
1、安装SQL&nbsp;Server2000&nbsp;<br>2、打开tcp&nbsp;1433端口&nbsp;<br>3、打开udp&nbsp;1434端口&nbsp;<br>4、安装sql&nbsp;server&nbsp;sp3
 
有可能是那软件里面设置的用户名和密码和你服务器里面的用户名和密码不一样造成的。你可以手工加一个odbc试一下。
 
在网上摘的,看对你有没有帮助:<br>1.如果你是win2003,那么一定要安装sql的补丁sp3a&nbsp;<br><br>检查你的SQL有没有打补丁,没有的话要打上补丁,检查的方法是在查询分析器中运行:&nbsp;<br>select&nbsp;@@version&nbsp;<br>如果出来的版本号是8.00.760以下,则表明你未安装sp3的补丁,要装上.&nbsp;<br><br>注意下载后,执行的时候是解压,要在解压后的目录中执行setup.bat才是真正的安装&nbsp;<br><br>2.SQL&nbsp;Server连接中的四个最常见错误:&nbsp;<br><br>一.&quot;SQL&nbsp;Server&nbsp;不存在或访问被拒绝&quot;&nbsp;<br><br>这个是最复杂的,错误发生的原因比较多,需要检查的方面也比较多.&nbsp;<br><br>一般说来,有以下几种可能性:&nbsp;<br><br>1,SQL&nbsp;Server名称或IP地址拼写有误&nbsp;<br>2,服务器端网络配置有误&nbsp;<br>3,客户端网络配置有误&nbsp;<br><br>要解决这个问题,我们一般要遵循以下的步骤来一步步找出导致错误的原因.&nbsp;<br><br>=============&nbsp;首先,检查网络物理连接&nbsp;=============&nbsp;<br>ping&nbsp;&lt;服务器IP地址/服务器名称&gt;&nbsp;<br><br>如果&nbsp;ping&nbsp;&lt;服务器IP地址&gt;&nbsp;不成功,说明物理连接有问题,这时候要检查硬件设备,如网卡,HUB,路由器等.&nbsp;<br>还有一种可能是由于客户端和服务器之间安装有防火墙软件造成的,比如&nbsp;ISA&nbsp;Server.防火墙软件可能会屏蔽对&nbsp;ping,telnet&nbsp;等的响应&nbsp;<br>因此在检查连接问题的时候,我们要先把防火墙软件暂时关闭,或者打开所有被封闭的端口.&nbsp;<br><br>如果ping&nbsp;&lt;服务器IP地址&gt;&nbsp;成功而,ping&nbsp;&lt;服务器名称&gt;&nbsp;失败&nbsp;<br>则说明名字解析有问题,这时候要检查&nbsp;DNS&nbsp;服务是否正常.&nbsp;<br>有时候客户端和服务器不在同一个局域网里面,这时候很可能无法直接使用服务器名称来标识该服务器,这时候我们可以使用HOSTS文件来进行名字解析,&nbsp;<br>具体的方法是:&nbsp;<br><br>1.使用记事本打开HOSTS文件(一般情况下位于C:/WINNT/system32/drivers/etc).&nbsp;<br>添加一条IP地址与服务器名称的对应记录,如:&nbsp;<br>172.168.10.24&nbsp;myserver&nbsp;<br>2.或在&nbsp;SQL&nbsp;Server&nbsp;的客户端网络实用工具里面进行配置,后面会有详细说明.&nbsp;<br><br>=============&nbsp;其次,使用&nbsp;telnet&nbsp;命令检查SQL&nbsp;Server服务器工作状态&nbsp;=============&nbsp;<br>telnet&nbsp;&lt;服务器IP地址&gt;&nbsp;1433&nbsp;<br><br>如果命令执行成功,可以看到屏幕一闪之后光标在左上角不停闪动,这说明&nbsp;SQL&nbsp;Server&nbsp;服务器工作正常,并且正在监听1433端口的&nbsp;TCP/IP&nbsp;连接&nbsp;<br>如果命令返回&quot;无法打开连接&quot;的错误信息,则说明服务器端没有启动&nbsp;SQL&nbsp;Server&nbsp;服务,&nbsp;<br>也可能服务器端没启用&nbsp;TCP/IP&nbsp;协议,或者服务器端没有在&nbsp;SQL&nbsp;Server&nbsp;默认的端口1433上监听.&nbsp;<br><br>接着,我们要到服务器上检查服务器端的网络配置,检查是否启用了命名管道.是否启用了&nbsp;TCP/IP&nbsp;协议等等&nbsp;<br>可以利用&nbsp;SQL&nbsp;Server&nbsp;自带的服务器网络使用工具来进行检查.&nbsp;<br><br>点击:程序&nbsp;--&nbsp;Microsoft&nbsp;SQL&nbsp;Server&nbsp;--&nbsp;服务器网络使用工具&nbsp;<br><br>打开该工具后,在&quot;常规&quot;中可以看到服务器启用了哪些协议.&nbsp;<br>一般而言,我们启用命名管道以及&nbsp;TCP/IP&nbsp;协议.&nbsp;<br>点中&nbsp;TCP/IP&nbsp;协议,选择&quot;属性&quot;,我们可以来检查&nbsp;SQK&nbsp;Server&nbsp;服务默认端口的设置&nbsp;<br>一般而言,我们使用&nbsp;SQL&nbsp;Server&nbsp;默认的1433端口.如果选中&quot;隐藏服务器&quot;,则意味着客户端无法通过枚举服务器来看到这台服务器,起到了保护的作用,但不影响连接.&nbsp;<br><br>=============&nbsp;接下来我们要到客户端检查客户端的网络配置&nbsp;=============&nbsp;<br><br>我们同样可以利用&nbsp;SQL&nbsp;Server&nbsp;自带的客户端网络使用工具来进行检查,&nbsp;<br>所不同的是这次是在客户端来运行这个工具.&nbsp;<br><br>点击:程序&nbsp;--&nbsp;Microsoft&nbsp;SQL&nbsp;Server&nbsp;--&nbsp;客户端网络使用工具&nbsp;<br><br>打开该工具后,在&quot;常规&quot;项中,可以看到客户端启用了哪些协议.&nbsp;<br>一般而言,我们同样需要启用命名管道以及&nbsp;TCP/IP&nbsp;协议.&nbsp;<br>点击&nbsp;TCP/IP&nbsp;协议,选择&quot;属性&quot;,可以检查客户端默认连接端口的设置,该端口必须与服务器一致.&nbsp;<br><br>单击&quot;别名&quot;选项卡,还可以为服务器配置别名.服务器的别名是用来连接的名称,&nbsp;<br>连接参数中的服务器是真正的服务器名称,两者可以相同或不同.别名的设置与使用HOSTS文件有相似之处.&nbsp;<br><br>通过以上几个方面的检查,基本上可以排除第一种错误.&nbsp;<br><br>-----------------------------------------------------------------------------&nbsp;<br><br>二.&quot;无法连接到服务器,用户xxx登陆失败&quot;&nbsp;<br><br>该错误产生的原因是由于SQL&nbsp;Server使用了&quot;仅&nbsp;Windows&quot;的身份验证方式,&nbsp;<br>因此用户无法使用SQL&nbsp;Server的登录帐户(如&nbsp;sa&nbsp;)进行连接.解决方法如下所示:&nbsp;<br><br>1.在服务器端使用企业管理器,并且选择&quot;使用&nbsp;Windows&nbsp;身份验证&quot;连接上&nbsp;SQL&nbsp;Server&nbsp;<br>在企业管理器中&nbsp;<br>--右键你的服务器实例(就是那个有绿色图标的)&nbsp;<br>--编辑SQL&nbsp;Server注册属性&nbsp;<br>--选择&quot;使用windows身份验证&quot;&nbsp;<br><br>2.展开&quot;SQL&nbsp;Server组&quot;,鼠标右键点击SQL&nbsp;Server服务器的名称,选择&quot;属性&quot;,再选择&quot;安全性&quot;选项卡&nbsp;<br>3.在&quot;身份验证&quot;下,选择&quot;SQL&nbsp;Server和&nbsp;Windows&nbsp;&quot;.&nbsp;<br>4.重新启动SQL&nbsp;Server服务.&nbsp;<br><br>在以上解决方法中,如果在第&nbsp;1&nbsp;步中使用&quot;使用&nbsp;Windows&nbsp;身份验证&quot;连接&nbsp;SQL&nbsp;Server&nbsp;失败,&nbsp;<br>那就通过修改注册表来解决此问题:&nbsp;<br><br>1.点击&quot;开始&quot;-&quot;运行&quot;,输入regedit,回车进入注册表编辑器&nbsp;<br>2.依次展开注册表项,浏览到以下注册表键:&nbsp;<br>[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSSQLServer/MSSQLServer]&nbsp;<br>3.在屏幕右方找到名称&quot;LoginMode&quot;,双击编辑双字节值&nbsp;<br>4.将原值从1改为2,点击&quot;确定&quot;&nbsp;<br>5.关闭注册表编辑器&nbsp;<br>6.重新启动SQL&nbsp;Server服务.&nbsp;<br><br>此时,用户可以成功地使用sa在企业管理器中新建SQL&nbsp;Server注册,&nbsp;<br>但是仍然无法使用Windows身份验证模式来连接SQL&nbsp;Server.&nbsp;<br>这是因为在&nbsp;SQL&nbsp;Server&nbsp;中有两个缺省的登录帐户:&nbsp;<br>BUILTIN/Administrators&nbsp;<br>&lt;机器名&gt;/Administrator&nbsp;被删除.&nbsp;<br>要恢复这两个帐户,可以使用以下的方法:&nbsp;<br><br>1.打开企业管理器,展开服务器组,然后展开服务器&nbsp;<br>2.展开&quot;安全性&quot;,右击&quot;登录&quot;,然后单击&quot;新建登录&quot;&nbsp;<br>3.在&quot;名称&quot;框中,输入&nbsp;BUILTIN/Administrators&nbsp;<br>4.在&quot;服务器角色&quot;选项卡中,选择&quot;System&nbsp;Administrators&quot;&nbsp;<br>5.点击&quot;确定&quot;退出&nbsp;<br>6.使用同样方法添加&nbsp;&lt;机器名&gt;/Administrator&nbsp;登录.&nbsp;<br><br>说明:&nbsp;<br><br>以下注册表键:&nbsp;<br>HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSSQLServer/MSSQLServer/LoginMode&nbsp;<br>的值决定了SQL&nbsp;Server将采取何种身份验证模式.&nbsp;<br>1.表示使用&quot;Windows&nbsp;身份验证&quot;模式&nbsp;<br>2.表示使用混合模式(Windows&nbsp;身份验证和&nbsp;SQL&nbsp;Server&nbsp;身份验证).&nbsp;<br><br><br>-----------------------------------------------------------------------------&nbsp;<br><br>三.提示连接超时&nbsp;<br><br>如果遇到第三个错误,一般而言表示客户端已经找到了这台服务器,并且可以进行连接,&nbsp;<br>不过是由于连接的时间大于允许的时间而导致出错.&nbsp;<br>这种情况一般会发生在当用户在Internet上运行企业管理器来注册另外一台同样在Internet上的服务器,&nbsp;<br>并且是慢速连接时,有可能会导致以上的超时错误.有些情况下,由于局域网的网络问题,也会导致这样的错误.&nbsp;<br><br>要解决这样的错误,可以修改客户端的连接超时设置.&nbsp;<br>默认情况下,通过企业管理器注册另外一台SQL&nbsp;Server的超时设置是&nbsp;4&nbsp;秒,&nbsp;<br>而查询分析器是&nbsp;15&nbsp;秒(这也是为什么在企业管理器里发生错误的可能性比较大的原因).&nbsp;<br><br>具体步骤为:&nbsp;<br>企业管理器中的设置:&nbsp;<br>1.在企业管理器中,选择菜单上的&quot;工具&quot;,再选择&quot;选项&quot;&nbsp;<br>2.在弹出的&quot;SQL&nbsp;Server企业管理器属性&quot;窗口中,点击&quot;高级&quot;选项卡&nbsp;<br>3.在&quot;连接设置&quot;下的&quot;登录超时(秒)&quot;右边的框中输入一个比较大的数字,如&nbsp;20.&nbsp;<br><br>查询分析器中的设置:&nbsp;<br>工具&nbsp;--&nbsp;选项&nbsp;--&nbsp;连接&nbsp;--&nbsp;将登录超时设置为一个较大的数字&nbsp;<br><br><br>---------------------------------------------------------------------------------&nbsp;<br><br>四.大部分机都用Tcp/ip才能成功,有次我发现用Named&nbsp;Pipes才可以?&nbsp;<br><br>这是因为在WINDOWS&nbsp;2000以后的操作系统中,MS为解决SQL&nbsp;SERVER的安全问题将TCP/IP配置&nbsp;<br>为SQLSERVER的默认连接协议,你可以在CLIENT&nbsp;NETWORK&nbsp;UTILITY中看到TCP/IP和NAME&nbsp;PIPE&nbsp;<br>的顺序。&nbsp;<br><br>你也可以在:&nbsp;<br>[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSSQLServer/Client/SuperSocketNetLib]&nbsp;<br>&quot;ProtocolOrder&quot;=hex(7):74,00,63,00,70,00,00,00,00,00&nbsp;<br>看到默认的协议。&nbsp;<br><br>2.怎么在程序中更改Named&nbsp;Pipes&nbsp;,&nbsp;Tcp/ip&nbsp;,其sql语句怎么写?&nbsp;<br>你可以在上面提到的注册表的位置修改:&nbsp;<br>CLIENT端:&nbsp;<br>[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSSQLServer/Client/SuperSocketNetLib]&nbsp;<br>&quot;ProtocolOrder&quot;=hex(7):74,00,63,00,70,00,00,00,00,00&nbsp;<br><br>SERVER端:&nbsp;<br>[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSSQLServer/MSSQLServer/SuperSocketNetLib]&nbsp;<br>&quot;ProtocolOrder&quot;=hex(7):74,00,63,00,70,00,00,00,00,00&nbsp;<br><br>SQL中,连接的配置就这两个方面&nbsp;<br><br>SQL&nbsp;Server服务器--开始--程序--Microsoft&nbsp;SQL&nbsp;Server&nbsp;<br>--服务器网络实用工具&nbsp;<br>--启用&nbsp;WinSock代理&nbsp;<br>--代理地址:(sqlserver服务器IP)&nbsp;<br>--代理端口--1433&nbsp;<br>---确定&nbsp;<br><br>客户端&nbsp;<br>开始--程序--Microsoft&nbsp;SQL&nbsp;Server--客户端网络实用工具&nbsp;<br>--别名--添加&nbsp;<br>--网络库选择&quot;tcp/ip&quot;--服务器别名输入SQL服务器名&nbsp;<br>--连接参数--服务器名称中输入SQL服务器ip地址&nbsp;<br>--如果你修改了SQL的端口,取消选择&quot;动态决定端口&quot;,并输入对应的端口号
 
TO:创意人生<br>&nbsp;&nbsp;是哦,如果我用odbc连接时不选tcp/ip,而是选第一个named&nbsp;pipes时就可以.为什么?<br>那现在是别人的软件那怎么办呢.
 
?为什么要在一台机器上运行两个实例,在一个实例上运行多个数据库,不行吗、
 
呵呵,这可不是我说了算啊.我们是买的别的的打卡系统.现在数据库连接有问题.
 
应该是ODBC的事情。。<br>要是楼主这么说的话。我建议你找找软件开发商。
 
To&nbsp;Lany_Luo,<br>1、我这边的办法是在ODBC里也建立一个连接,软件就可以连接到数据库。<br>2、很有可能是SQL&nbsp;Server配置问题,因为在我们公司里MIS配置的服务器就没有这个问题,我安装的就有问题。<br>3、找软件商,让改成Named&nbsp;Pipes方式连接。
 
这样?<br>不知道可不可以呢.今天联系看看.那是否要改一下sql&nbsp;server&nbsp;的配置呢.
 
后退
顶部