`
webcenterol
  • 浏览: 911044 次
文章分类
社区版块
存档分类
最新评论

无法用TCP/IP协议连接远端SQL Server EXPRESS 2005 数据库问题

 
阅读更多

1. 什么是命名管道? 与TCP/IP(传输控制协议或internet协议)一样,命名管道是一种通讯协议。它一般用于局域网中,因为它要求客户端必须具有访问服务器资源的权限。
要解释这个问题,我还是摘录微软官方的资料比较好
http://msdn.microsoft.com/zh-cn/library/ms187892.aspx

若要连接到 SQL Server 数据库引擎,必须启用网络协议。Microsoft SQL Server可同时通过多种协议处理请求。客户端用单个协议连接到 SQL Server。如果客户端程序不知道 SQL Server正在侦听哪个协议,可以配置客户端按顺序尝试多个协议。使用 SQL Server 配置管理器启用、禁用以及配置网络协议。
Shared Memory
SharedMemory 是可供使用的最简单协议,没有可配置的设置。由于使用 Shared Memory 协议的客户端仅可以连接到同一台计算机上运行的SQL Server 实例,因此它对于大多数数据库活动而言是没用的。如果怀疑其他协议配置有误,请使用 Shared Memory协议进行故障排除。
注意:
使用 MDAC 2.8 或更早版本的客户端不能使用 Shared Memory 协议。如果这些客户端尝试使用,将自动切换为 Named Pipes 协议。




TCP/IP
TCP/IP是 Internet 上广泛使用的通用协议。它与互连网络中硬件结构和操作系统各异的计算机进行通信。TCP/IP包括路由网络流量的标准,并能够提供高级安全功能。它是目前在商业中最常用的协议。将计算机配置为使用 TCP/IP可能会很复杂,但大多数联网的计算机已经配置正确。若要配置未在 SQL Server 配置管理器中出现的 TCP/IP 设置,请参阅Microsoft Windows 文档。


Named Pipes
Named Pipes 是为局域网而开发的协议。内存的一部分被某个进程用来向另一个进程传递信息,因此一个进程的输出就是另一个进程的输入。第二个进程可以是本地的(与第一个进程位于同一台计算机上),也可以是远程的(位于联网的计算机上)。


VIA
虚拟接口适配器 (VIA) 协议和 VIA 硬件一同使用。有关如何使用 VIA 的信息,请与硬件供应商联系。


Named Pipes 与 TCP/IP 套接字
在快速局域网 (LAN) 环境中,传输控制协议或 Internet 协议 (TCP/IP) 套接字客户端和 Named Pipes客户端在性能方面不相上下。但是,网络速度越慢[如在广域网 (WAN) 或拨号网络上],TCP/IP 套接字客户端与 Named Pipes客户端的性能差异越明显。这是因为进程间通信 (IPC) 的机制在对等项间的通信方式不同。
对于 NamedPipes,通常网络通信交互性更强。一个对等方直到另一个对等方使用读取命令请求数据时才发送数据。在开始读取数据前,网络读取一般包括一系列窥视Named Pipes 的信息。这在慢速网络中可能开销非常大,并会导致过多的网络流量,其他的网络客户端反过来也会受到影响。
阐明所讨论的是本地管道还是网络管道也很重要。如果服务器应用程序在运行 SQL Server 实例的计算机的本地运行,则可以选择本地 Named Pipes 协议。本地 Named Pipes 以内核模式运行且速度非常快。
对于 TCP/IP 套接字,数据传输的效率更高,开销也更少。数据传输还可以利用 TCP/IP 套接字性能增强机制的优点,例如窗口化、延迟确认等。这在慢速网络中可能非常有益。对于应用程序的不同类型,这类性能差异可能非常大。
TCP/IP 套接字还支持积压队列。试图连接到 SQL Server 时,与可能导致管道忙错误的 Named Pipes 相比,该队列可以带来有限的平稳效果。
通常,TCP/IP 在慢速 LAN、WAN 或拨号网络中效果较好。而当网络速度不成问题时,Named Pipes 则是更好的选择,因为其功能更强、更易于使用并具有更多的配置选项。


启用协议
该协议必须在客户端和服务器上都启用才能正常工作。服务器可以同时监听所有已启用的协议的请求。客户端计算机可以选取一个协议,或按照 SQL Server 配置管理器中列出的顺序尝试这些协议。
注意:
Microsoft SQL Server 不支持 Banyan VINES 顺序包协议 (SPP)、多协议、AppleTalk 或 NWLink IPX/SPX 网络协议。以前使用这些协议连接的客户端必须选择其他协议才能连接到 SQL Server。


实际上,命名管道在SQL Server配置管理器中看起来是下面这样。其实,在安装好SQL Server之后就自动会有一个管道名称。你当然也可以修改该名称的。



2. 为什么用命名管道? 使用命名管道的原因一般有两个方面
提高速度
假设同样在局域网中,那么使用命名管道协议会比TCP/IP协议快一些。
增加安全性
因为命名管道是只能用于局域网的,那么如果服务器关闭了TCP/IP协议而仅启用命名管道,就可以避免一些安全隐患
3. 如何使用命名管道? 要使用命名管道连接到SQL Server,客户端代码中的连接字符串大致的语法是这样的
"server=.;database=northwind;uid=sa;pwd=pass@word;Network Library=dbnmpntw"
如果服务器是命名实例,则
"server=./instanceName;database=northwind;uid=sa;pwd=pass@word;Network Library=dbnmpntw"
【注意】必须在服务器启用named pipe协议,并且启动Broswer服务

为了避免在连接字符串中这么麻烦,也为了避免泄露我们连接数据的一些机密信息。SQL Server Native Client还支持定义别名

点击“别名”,然后点击“新建别名”

如果创建好了别名,则可以在连接字符串中直接这样写
"server=Myserver;database=master;integrated security=true;"
看起来和以前我们定义ODBC数据源很类似,不是吗?
那么,如果这一串连接字符串被泄露,即便是别有用心的人,也不可能猜到我们的服务器到底是什么名字,而且我们使用了什么协议连接的。
反过来,我就又想到,这个别名是要在客户端创建的。那么是不是要我们自己跑到客户端去创建呢?显然不可能。那么该怎么办呢?
我自然联想到了ODBC数据源的动态创建,其实我们那时候是修改注册表的。我按照同样的思路找到了下面的注册表项

也就是说,你可以在安装程序的时候,动态给这个项目下面添加一些项。就可以实现了。


其他参考资源:SQL Server 2008 Native Client编程
http://msdn.microsoft.com/zh-cn/library/ms130892.aspx

本文转自: http://wangyinghui.5d6d.com/frame.php?frameon=yes&referer=http%3A//wangyinghui.5d6d.com/thread-347-1-1.html

==============================================================================

今天使用虚拟机进行测试,重新进行设置,以使SQL Server 2005 Express可以远程访问,设置方法如下:

1、 确认成功安装SQL Server 2005 Express和 数据库服务已经启动。安装完成后,可以通过随SQL Server 2005Express一同安装的工具 SQL Server Configuration Manager 查看数据库服务和其他的配置信息。



上图显示数据库服务已经启用。
2、 查看SQL Server Express 2005 网络配置信息(SQL Server 2005 NetworkConfiguration――> Protocols for SQLEXPRESS)。默认的情况下右边列表中的NamedPipes和TCP/IP的状态为Disable,即没有启用。右键点击这两项,在弹出菜单中选中Enable启用这两个协议,如下图。


3、 在 TCP/IP协议上双击鼠标,弹出对话框。修改对话框Protocol属性页中的“Listen All ”项设为“no”。IPAddress属性页中,修改你要数据库服务监听的IP地址的属性,修改Enabled属性为Yes,修改TCP DynamicPorts属性为空,TCP Port项在默认安装下为空,现在修改为我们监听端口1433。修改后的状态如下图所示;


4、 启动管理工具,管理界面如下所示:


选中“Surface Area Configuration for Services and Connection”选项
5、 改修改DATA Engine的Remote Connection属性,修改后的属性如下图所示:


6、 完成以上操作后需要重新启动数据库服务才能使修改生效,下图的操作可以完成数据库服务的重启。


7、 重启后,可以在命令窗口输入如下命令“netstat -na”命令查看服务器监听的所有端口,如果我们设备的1433端口正在监听,我们启用SQL Server 2005Express网络操作成功。当然也可以使用telnet 命令来验证数据库操作是否成功。使用netstat命令操作如下图所示。


上面讲的这种方法,是可以设置成功的,同时,注意一下windows防火墙的设置就可以了。

还有一种更为简单的方法,卸载SQL Server EXPRESS2005,重新安装,修改默认安装的相关参数就可以了,让安装系统自动进行配置,可能会更简单一些。

重新安装之后,将相应的数据库附加进来就可以了。

本文转自: http://wangyinghui.5d6d.com/frame.php?frameon=yes&referer=http%3A//wangyinghui.5d6d.com/thread-347-1-1.html

=========================================================================

分享到:
评论

相关推荐

    Microsoft SQL Server 2005 Express Edition SP3

    如果已在安装过程中使用了默认的命名实例,则将实例指定为“SQLExpress”。 [顶部] 2.3 管理 SQL Server Express 的工具 有关连接到 SQL Server Express 数据库并进行管理的信息,请参阅 Microsoft 知识库文章 ...

    MyEclipse中用JDBC连接Sql_Server_2005

    用JDBC连接Sql Server 2005总结 1.准备工作: 准备相关的软件(Eclipse除外,开源软件可以从官网下载) ...打开SQL Server Configuration Manager -> SQLEXPRESS的协议 -> TCP/IP b.右键单击启动TCP

    SQL Server 2008 Express如何开启远程访问

    Visual Studio Express和SQL Server Express系列为基础型免费程序开发环境和SQL数据库,为广大的学习爱好者带来了福音,同时还可以利用它们进行...2. 选择SQL网络配置->SQLEXPRESS的协议,选择右边的TCP/IP, 此协议默

    学籍管理系统1-jsp

    项目文件名为stu放在tomcat中webapps下...安装完成后,打开配置应用程序,进入SQL Server 2005网络配置-SQLEXPRESS的协议---TCP/IP 右键点击启用状态,进入tcp/ip ip地址ipall的tcp端口改为1433后重启SQLServer服务端。

    节点MS-SQL

    现在,在下一页上双击“ SQL Server网络配置” 现在,双击“ SQL Express协议” 如果我们想将Node.js连接到SQL Server(如果未启用),则应该启用TCP / IP协议,然后可以通过右键单击TCP / IP协议并选择“启用”来...

    DBConvert for MSSQL and DB2 2.1.1 中文免费版.zip

    MS SQL Server(Express)2000/2005/2008/2008 R2 / 2012/2014,SQL Azure支持 能够选择TCP / IP,PIPE,IPX / SPX通信协议 Amazon RDS SQL Server数据库实例支持 DB2 v。 9.7及更高版本的 MS SQL方案支持 界面...

    卡巴斯基管理工具8.0部署指南

    卡巴斯基管理工具支持所有使用TCP/IP协议的网络配置。该程序是一个针对企业网络管理员和反病毒安全管理员的高效管理工具。 硬件和软件需求 管理服务器 • 软件需求: • 微软数据访问组件(MDAC) 2.8 或更高。 • ...

    chatbot.api.js

    安装SQL Management Studio为了运行数据库脚本创建bot SQL用户并登录安装后,请确保数据库中已启用TCP / IP连接(端口1433) (SQLManager {VERSION})->网络配置->协议->启用在“ IP地址”选项卡上,设置tcp端口...

    citrix 中文管理操作手册

    Microsoft SQL Server 2005 Express Edition 130 Oracle 130 IBM DB2 130 保护网络通信 130 保护客户端服务器通信 131 使用 SecureICA 132 启用 SSL/TLS 协议 132 配置会话数据加密 133 为 ICA 加密设置策略 134 ...

    cmd操作命令和linux命令大全收集

    tftp -i 自己IP(用肉机作跳板时这用肉机IP) get server.exec:server.exe 登陆后,将“IP”的server.exe下载到目标主机c:server.exe 参数:-i指以二进制模式传送,如传送exe文件时用,如不加-i 则以ASCII模式(传送...

    路由器配置实例--100例

    但是它只能在启用CEF(Cisco Express Forwarding)的路由器上使用。 uRPF有三种方式,strict方式、ACL方式和loose方式。在接入路由器上实施时,对于通过单链路接入网络的用户,建议采用strict方式;对于通过多条链路接...

    windows XP命令集合

    cliconfg sql server:客户端网络实用程序 clipbrd:剪贴板查看器 conf:启动netmeeting compmgmt.msc:计算机管理 cleanmgr:垃圾整理 ciadv.msc:索引服务程序 osk:打开屏幕键盘 odbcad32:odbc数据源管理...

    网管教程 从入门到精通软件篇.txt

    向系统分区写入新的主引导记录可能破坏分区表并导致分区无法访问。  format  将指定的驱动器格式化为指定的文件系统。含有下列参数的 format 命令仅在使用故障恢复控制台时才可用。可在命令提示符下使用带有不同...

Global site tag (gtag.js) - Google Analytics