四.大部分机都用Tcp/ip才能成功,有次我发现用Named Pipes才可以?回复人: leimin(黄山光明顶)
这是因为在WINDOWS 2000以后的操作系统中,MS为解决SQL SERVER的安全问题将TCP/IP配置
为SQLSERVER的默认连接协议,你可以在CLIENT NETWORK UTILITY中看到TCP/IP和NAME PIPE
的顺序。你也可以在:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib]
"ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00
看到默认的协议。2.怎么在程序中更改Named Pipes , Tcp/ip ,其sql语句怎么写?
你可以在上面提到的注册表的位置修改:
CLIENT端:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib]
"ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00SERVER端:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib]
"ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00
这是因为在WINDOWS 2000以后的操作系统中,MS为解决SQL SERVER的安全问题将TCP/IP配置
为SQLSERVER的默认连接协议,你可以在CLIENT NETWORK UTILITY中看到TCP/IP和NAME PIPE
的顺序。你也可以在:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib]
"ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00
看到默认的协议。2.怎么在程序中更改Named Pipes , Tcp/ip ,其sql语句怎么写?
你可以在上面提到的注册表的位置修改:
CLIENT端:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib]
"ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00SERVER端:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib]
"ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00
--服务器网络实用工具
--看看启用的协议中,有没有"TCP/IP" 如果没有的话,那就肯定不能用IP地址连接的,因为IP地址是使用TCP/IP协议的
不启用TCP/IP就禁用了IP地址连接
2.如果已经启用了TCP/IP,则在"服务器网络实用工具",点属性,看看默认端口是多少
如果不是1433,则连接的时候要用: IP地址,端口号 做为sql服务器名来连接
3.如果还是不行,检查你的TCP/IP协议是否工作正常,最好是删除重新安装一次
一般的检查方法是:
a.保证ping <服务器IP地址> 通(有防火墙的先关闭防火墙)
b.在命令提示符下执行:telnet <服务器ip地址> 1433 不会报错
2.是1433
3.a:ping通;b:不会报错用IP地址连就是连不上:
[DBNETLIB][ConnectionOpen(PreLoginHandshake()).]General network error.Check your network documentation.
运行cliconfg,将网络库改成tcp/ip.
-------------------------
网络配置出了问题
原因不明,还是用机器名吧
server=192.168.1.1\MainSql;
MainSql为Sql名称,在服务器的SQL服务管理器上可以看到。
步骤: 1、进入服务器的“客户端网络实用工具”——单击“别名”
2、在下面添加“服务器别名设置”,在“网络库中”选择“TCP/IP”,服务器别名就用服务器IP地址,端口号是 1433
我发现这个问题好象主要与用户在安装服务器时,是否是默认的事例有关
具体的访问方式如下:
默认实例用 机器名(或ip)就行,
命名实例要用 机器名(或ip)\实例名.