SQL Server中的命名管道(named pipe)及其使用

SQL Server Native Client 11.0 连接协议对比:命名管道 vs TCP/IP 的 2 种应用场景 本文深入解析了SQL Server Native Client 11.0中命名管道与TCP/IP两种连接协议的核心差异与应用场景。通过性能对比测试和典型配置实践,帮助开发者在局域网高速访问和跨网络稳定连接等不同需求下做出最优选择,并提供了详细的故障排查与安全配置指南。 阅读详情

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 是可供使用的最简单协议,没有可配置的设置。由于使用 Shared Memory 协议的客户端仅可以连接到同一台计算机上运行的 SQL Server 实例,因此它对于大多数数据库活动而言是没用的。如果怀疑其他协议配置有误,请使用 Shared Memory 协议进行故障排除。

ms187892.note(zh-cn,SQL.100).gif注意:
使用 MDAC 2.8 或更早版本的客户端不能使用 Shared Memory 协议。如果这些客户端尝试使用,将自动切换为 Named Pipes 协议。

 

 

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

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

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

在快速局域网 (LAN) 环境中,传输控制协议或 Internet 协议 (TCP/IP) 套接字客户端和 Named Pipes 客户端在性能方面不相上下。但是,网络速度越慢[如在广域网 (WAN) 或拨号网络上],TCP/IP 套接字客户端与 Named Pipes 客户端的性能差异越明显。这是因为进程间通信 (IPC) 的机制在对等项间的通信方式不同。

对于 Named Pipes,通常网络通信交互性更强。一个对等方直到另一个对等方使用读取命令请求数据时才发送数据。在开始读取数据前,网络读取一般包括一系列窥视 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 配置管理器中列出的顺序尝试这些协议。

ms187892.note(zh-cn,SQL.100).gif注意:
Microsoft SQL Server 不支持 Banyan VINES 顺序包协议 (SPP)、多协议、AppleTalk 或 NWLink IPX/SPX 网络协议。以前使用这些协议连接的客户端必须选择其他协议才能连接到 SQL Server。

 

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

image

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还支持定义别名

image

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

image

如果创建好了别名,则可以在连接字符串中直接这样写

"server=Myserver;database=master;integrated security=true;"

看起来和以前我们定义ODBC数据源很类似,不是吗?

那么,如果这一串连接字符串被泄露,即便是别有用心的人,也不可能猜到我们的服务器到底是什么名字,而且我们使用了什么协议连接的。

反过来,我就又想到,这个别名是要在客户端创建的。那么是不是要我们自己跑到客户端去创建呢?显然不可能。那么该怎么办呢?

我自然联想到了ODBC数据源的动态创建,其实我们那时候是修改注册表的。我按照同样的思路找到了下面的注册表项

image

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

 

《Sysinternals实战指南》PipeList 学习笔记(15.13):命名管道枚举与进程间通信排障 PipeList = 命名管道扫描器一条命令,就能看到系统所有管道、实例数;配合-p和-a能看到:是谁开的谁能访问应用连通性排障(SQL / 中间件 / 各类 Agent)安全审计 / 可疑进程排查IPC 资源泄漏 & 性能分析从线程栈 → 内存页 → IPC 管道 → 内核对象一路顺藤摸瓜追到问题根源PipeList 看起来不起眼,但在“看清进程间在背后说什么悄悄话”这件事上,它非常关键。 阅读详情

相关推荐

【Web实战】微信小程序逆向

2E 70 6E 67”为带存放路径的文件名称,“00 00 11 7C”对应文件在小程序包中的具体偏移位置,“00 01 01 F7“对应文件在小程序包中的数据长度。但这并不是最初的原项目文件结构,原因是微信服务器会将小程序源码中所有的“js”文件压入“app-service.js”文件中,将所有的“json”文件压入“app-config.json”中,将所有的“wxml”文件压入“page-frame.html”文件中,“wxss”则在处理之后以“html”文件的形式存留在对应页面目录之下。

若有战,召必回 1944

SQL Server使用的协议:Named Pipe(命名管道)

最近关注了SQL Server使用到的一些网络协议,比如 Named Pipe,整理如下: Named Pipe(命名管道)是一种用于局域网的协议。在此协议下,计算机的一部分内存会被某个进程用于向另一个进程传递信息。后者可以是本地进程,也可以是远程的。 什么场合会考虑使用Named Pipe呢? 如果服务器和客户端都在局域网中,可以考虑使用它。Named Pipe在局域网中的速率比TCP/I

天天向尚 的专栏 4727

Python遥感技术实战:NDWI与MNDWI水体提取算法对比与优化

本文详细对比了NDWI与MNDWI两种水体提取算法在Python遥感技术中的应用。通过实战代码演示,分析了二者在自然与城镇场景下的表现差异,并重点介绍了阈值优化与后处理技巧,旨在帮助读者掌握高效、精准的水体提取方法,提升遥感数据分析能力。

f6g7h8i9j的博客 498

配置SQL Server的命名管道和TCP/IP设置

在本技巧中,我们将了解如何启用TCP/IP和命名管道并配置防火墙规则,以便其他网络计算机可以与SQL Server实例进行通信。

寒冰屋的专栏 7857

基于Python爬虫的新闻热点分析与挖掘

本文介绍了基于Python爬虫的新闻热点分析与挖掘方法,主要包括数据收集、预处理、热点分析和可视化四个部分。首先通过爬虫抓取新浪新闻数据,利用文本清洗和存储技术进行数据预处理;接着采用TF-IDF和LDA算法进行关键词提取与主题建模;最后通过词云图和主题分布图实现数据可视化。该方法能有效识别新闻热点,为信息筛选和决策提供支持。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1544

【杰理AC696X】ADKEY复用指示灯不定时出现灯不亮或按键失灵的问题

测试SDK版本:《ac696n_soundbox_sdk_v1.5.0-20211217》ADKEY复用指示灯的做法多用于蓝牙小音箱,IC引脚越来越少,复用也就用的越多了,不过,在使用前应评估好功能,因为复用的做法,肯定会牺牲点东西的,如果体验感啥的。 比如这个图,(V-)按键按下时,LED是会一直导通发光的,按不同阻值的按键还有亮度不一致的问题,这样的问题有的客户是不接受的,这就要另寻他法了。某天调好案子,放在一边测试时,发现指示灯不亮了,按键也不起作用,想起之前AC692系列也有类似的问题,很快就定位到

xx842678的博客 1654

Navicat连接本地SqlServer出现 [08001][Microsoft][sQL Server Native Client 11.0]命名管道提供程序:无法打开与SQL Server等错误

08001][Microsoft][SQL Server Native Client11.0]与SQL Server建立连接时发生了与网络相关的或特定于实例的错误。有关详细信息,请参阅SQL Server联机丛书。[08001][Microsoft][sQL Server Native Client 11.0]命名管道提供程序:无法打开与SQL Server的连接[53].(53)[HYTO0] [Microsoft][SQL Server Native Client 11.0]登录超时已过期(O)

LP'S Blog 8252

3、固定翼无人机模型解析

本文详细解析了固定翼无人机的动力学模型与纵向模型,涵盖位置、速度、角度及角速度的变化率方程,并介绍了力和力矩的计算方法以及气动系数的表达式。通过关键参数分析,探讨了速度、迎角和倾斜角对飞行性能的影响。文章还展示了模型在编队飞行和任务规划中的应用,并提出了参数优化与先进控制策略等优化思路,为无人机飞行控制系统设计提供了理论基础。

gaochao的博客 240

mysql 的命名管道_SQL Server中的命名管道(named pipe)及其使用

1. 什么是命名管道?与TCP/IP(传输控制协议或internet协议)一样,命名管道是一种通讯协议。它一般用于局域网中,因为它要求客户端必须具有访问服务器资源的权限。要解释这个问题,我还是摘录微软官方的资料比较好 若要连接到 SQL Server 数据库引擎,必须启用网络协议。Microsoft SQL Server 可同时通过多种协议处理请求。客户端用单个协议连接到 SQL Server。如...

weixin_39761195的博客 983

【异常】解决 Cursor 报错 Unexpected seqno: 2 != 1. Please try again, or contact support if the issue 的排坑指南

在使用 Cursor 辅助编程时,你是否遇到过 AI 突然中断输出,并在右下角弹出一个红色的 Network Error 弹窗?今天我们就来彻底解析并解决这个网络断连问题。

奶爸的编程之路,也就一周冷个三天 2475

《拉依达的嵌入式\驱动面试宝典》—操作系统篇(二)

《拉依达的嵌入式\驱动面试宝典》 整合了所有我认为可能遇到的技术面试问题。所有问题及其答案均是我个人学习后查阅资料总结,每个回答都做了仔细的分析,在嵌入式及其驱动面试相关问题解析做到全网独一无二。学习或者转行到嵌入式、驱动开发领域学习的不二之选

拉依达不拉跨的博客 471

mysql使用命名管道,SQL Server中的命名管道(named pipe)及其使用

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

weixin_42512613的博客 1380

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Sqlserver安全篇之_启用和禁用Named Pipes的案列介绍

默认情况下, SQL Server 侦听:\.\pipe\sql\query(对于默认实例)和 \.\pipe\MSSQL$\sql\query(对于命名实例)SSMS如何以Named pipe方式连接sqlserver,直接在SSMS的Servername一栏填上np:servername。

lusklusklusk的博客 812

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

使用 Named Pipes 创建有效的连接字符串

使用 Named Pipes 创建有效的连接字符串 SQL Server 2008SQL Server 2005<br /> <br />默认 Microsoft SQL Server 实例侦听“named pipes”协议时,除非用户进行了更改,否则将使用 //./pipe/sql/query 作为管道名称。句点指示该计算机是本地计算机,pipe 指示该连接是命名管道,sql/query 为管道名称。若要连接到默认管道,别名必须使用 //<computer_name>/pipe/sql/query 作为管

xcntime的专栏 1072

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified

 https://blog.sqlauthority.com/2009/05/21/sql-server-fix-error-provider-named-pipes-provider-error-40-could-not-open-a-connection-to-sql-server-microsoft-sql-server-error/

我为编程狂,我为外语狂 1604

SQL Server连接中的四个最常见错误

SQL Server连接中的四个最常见错误: 一."SQL Server 不存在或访问被拒绝" 这个是最复杂的,错误发生的原因比较多,需要检查的方面也比较多. 一般说来,有以下几种可能性: 1,SQL Server名称或IP地址拼写有误 2,服务器端网络配置有误 3,客户端网络配置有误 要解决这个问题,我们一般要遵循以下的步骤来一步步找出导致错误的原因. ============= 首先,...

superlee 570

解决idea无法连接SQL Server,配置SQL Server的命名管道和TCP/IP设置

解决idea无法连接SQL Server,配置SQL Server的命名管道和TCP/IP设置

m0_61005893的博客 3298

SQL Server 连接问题圣经-命名管道 (4)

<br />七. 一些常见的连接问题<br /> <br />连接问题一:<br />[Named Pipes]SQL Server does not exist or access denied.<br />[Named Pipes]ConnectionOpen (Connect()).<br /> <br />这个连接错误多是因为客户端没有找到命名管道服务器(也就是SQL Server)造成的。<br />解决方法:<br />1)检查网络连通性,如ping等,确认SQL Server已经启动。<br

微软亚太区数据库技术支持组 官方博客 736

SQL Server 连接问题-命名管道

出自:http://blogs.msdn.com/b/apgcdsd/archive/2011/01/12/sql-server-1.aspx 一。前言   在使用SQL Server 的过程中,用户遇到的最多的莫过于连接问题了。本文将深度讨论SQL Server 连接问题的方方面面,希望能帮你彻底解决SQL server 的连接问题。   SQL Server 支持的通讯协议很多,如命

MVP黄钊吉(發糞塗牆) 1万+

Sql2005:provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接

1. 确保服务器端的数据库中存在sa,并支持混合登录模式.默认安装的时候,可能会忽略建立sa.     2. 确保服务器端的数据库是支持远程调用的.打开SQL Server Management Studio,选择该数据库,右键菜单"Properties",在打开的对话框中选择Connections,把Allow remote connections to this server选上.     3

青衫别院 4万+

SQL Server 连接问题圣经-命名管道 (1)

<br />一。前言<br /> <br />在使用SQL Server 的过程中,用户遇到的最多的莫过于连接问题了。本文将深度讨论SQL Server 连接问题的方方面面,希望能帮你彻底解决SQL server 的连接问题。<br /> <br />SQL Server 支持的通讯协议很多,如命名管道(Named Pipes)、TCP/IP 套接字、共享内存(Shared Memory)等。由于最常用的是前两种即命名管道和TCP/IP套接字,所以我们主要讨论这两种协议的连接问题。先来讨论命名管道,然后我们

微软亚太区数据库技术支持组 官方博客 619
上一篇: C#中按引用传递与按值传递的区别,以及ref与out关键字的使用
下一篇: 网络基础----OSI参考模型
Zevin
博客等级 码龄17年 63粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值