设为首页 收藏本站
查看: 1229|回复: 0

[经验分享] SQL Browser 动态端口

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-8-12 09:08:26 | 显示全部楼层 |阅读模式

一、启用TCP端口

1、启用TCP/IP协议

  打开SSCM(SQL Server Configuration Manager)。默认情况下,开发版、评估版、Express版禁用了TCP/IP协议。

092720644.png


2、全部侦听

  这个选项用来指示 SQL Server 是否侦听所有绑定到计算机网卡的 IP 地址。如果设置为“是”,则 IPAll 属性框的设置将应用于所有 IP 地址。默认值为“是”。

093444942.png


  如果设置为“否”,则使用每个 IP 地址各自的属性对话框对各个 IP 地址进行配置。

093810669.png


3、SQL Server Browser

094205215.png


在SQL Server 2000 以前的版本中,在一台服务器上只能有一个SQL Server 安装,相当于只能安装一个默认的实例。此时,SQL Server 始终只侦听TCP1433 端口或命名管道sqlquery。

  从SQL Server 2000 开始,引入了“实例”的概念,在一台服务器上可以有多个SQL Server 安装。而TCP1433 或命名管道sqlquery 只能被一个连接使用,一般分配给默认实例。为了解决端口冲突,SQL Server 2000 引入了SSRP 协议(SQL Server Resolution Protocol,即SQL Server解析协议),使用UDP1434 端口进行侦听。该侦听器用已安装的实例的名称以及实例使用的端口或命名管道来响应客户端请求。

  从SQL Server 2005 开始,使用SQL Server Browser 代替SSRP。如果服务器上没有运行该服务,则不能向客户端提供端口号或管道,而且SSMS(或SQL Server 2000的企业管理器、查询分析器)中的枚举服务不能正常工作。


4、动态端口

  命名实例在安装完成之后,默认使用动态端口。每次启动这个命名实例,都可能使用不同的TCP端口。可以在该命名实例启动完成之后,再进入这个页面,查看当前正在使用的端口。

095912229.png


5、端口冲突

  当SQL Server实例启动时遇到端口冲突,将导致实例的启动失败。可在系统中查到以下事件。

100418602.png

100425871.png

100432912.png

100440454.png

100448284.png

二、访问远程默认实例

  本实验从客户端192.168.1.2去访问SQL Server服务器192.168.1.1的默认实例。同时在客户端使用Microsoft 推荐的Network Monitor 3.4进行网络抓包分析。


省略....

2、从SQL Server 注销



三、访问远程命名实例

  本实验从客户端192.168.1.2去访问SQL Server服务器192.168.1.1的命名实例。

1、关闭UDP1434端口或停止SQL Server Browser导致无法连接

2、正常连接

3、从SQL Server 注销

四、实验:客户端访问

1. 实验环境

  localhost安装了默认实例MSSQLSERVER,端口1433;还安装了一个命名实例SQLEXPRESS,启动本实例后发现实际使用端口1031。


2. 连接字符串

  本实验使用的驱动程序为2种:OLE DB Provider for SQL Server 是Windows 操作系统集成的驱动程序,俗称ADO for SQL Server;SQL Server Native Client 10.0 需要事先安装SQL Server 客户端。

  可以在本机的 ODBC 设置界面查看已经安装的驱动程序。

QQ截图20150812090756.png


  为避开.Net Framework的干扰,本实验使用最古老的开发工具Borland Delphi 7。添加一个 TADOConnection 控件,其 ConnectionString 字符串为以下示例之一:

(1)驱动程序使用OLE DB Provider for SQL Server。采用Windows集成身份验证。

// Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=master;Data Source=localhost


(2)驱动程序使用OLE DB Provider for SQL Server,采用SQL Server混合身份验证。

// Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=master;Data Source=localhost


(3)驱动程序使用SQL Server Native Client 10.0。采用Windows集成身份验证。

// Provider=SQLNCLI10.1;Integrated Security=SSPI;Persist Security Info=False;User ID="";Initial Catalog=master;Data Source=localhost;Initial File Name="";Server SPN=""


(3)驱动程序使用SQL Server Native Client 10.0。采用SQL Server混合身份验证。

// Provider=SQLNCLI10.1;Integrated Security="";Persist Security Info=False;User ID=sa;Initial Catalog=master;Data Source=localhost;Initial File Name="";Server SPN=""


3. 测试结果

(1) 连接字符串使用“Data Source=localhost”,此时,优先使用1433端口,结果连接到localhostMSSQLSERVER。此时不需要SQL Server Browser服务。


(2) 连接字符串使用“Data Source=localhostsqlexpress,1433”,此时,优先使用1433端口,忽略了实例名称,结果仍然连接到localhostMSSQLSERVER。此时不需要SQL Server Browser服务。


(3) 连接字符串使用“Data Source=localhostsqlexpress”,此时,优先使用动态侦听,由SQL Server Browser提供端口号,结果连接到localhostsqlexpress。此时必须启用SQL Server Browser服务。

  关闭SQL Server Browser服务,然后继续使用连接字符串“Data Source=localhostsqlexpress”,此时,将首先尝试使用上一次SQL Server Browser提供的端口号,因此仍然可以连接到localhostsqlexpress。(难道是本机有缓存?)


(4) 保持停止SQL Server Browser服务。重启 sqlexpress 实例,然后查看TCP/IP属性,发现本次使用1035端口。

  连接字符串使用“Data Source=localhost,1035”,此时,优先使用1035端口,直接连接到localhostsqlexpress。

4. 结论

  如果指定了端口,就不需要SQL Server Browser服务。

  如果同时指定了端口和实例名,则会忽略实例名称,直接连接到指定的端口所对应的实例。  




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-97726-1-1.html 上篇帖子: proftpd+ssl安装及使用 下篇帖子: 统计Sql Server数据库中的每张表的记录数 Browser 动态
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表