我有一个需要通过WAN连接到远程SQL Server的.NET客户端,是否可以压缩客户端和服务器之间的SQL流量?
我正在使用.NET 3.5和SQL Server 2005及更高版本。
答案 0 :(得分:8)
查看SQL Server 2008的connectionstrings.com,数据库提供程序没有某种压缩方案......您可能需要在不同的端口上编写包装器,通过使用压缩数据在前端,通过该端口发送数据,从那里压缩,将其发送到远程端点,解压缩,然后将其转发到服务器所在的真实tcp / ip端口。
通常SQL Server位于端口1433 ...
因为一张图片胜过千言万语......
+--------+ +--------+ | CLIENT | | SERVER | +--------+ +--------+ Port 1234 Port 1433 <+--+ | | | | +={Module}= <=> TX/RX <=> ={Module}= -+-----------+
模块将在两端压缩/解压缩......
说实话,听起来会有工作因为防火墙的漏洞必须被打孔以允许压缩数据进出......扔进NAT / SNAT会让事情变得复杂......
看看我在Codeproject上写的这篇文章,该代码充当流量重定向器,可以很容易地修改为使用压缩/解压缩方案。
答案 1 :(得分:7)
正如其他人所说,SQL Server TDS协议没有内置压缩功能。值得一提的是,默认情况下也没有加密。要启用加密,您必须使用证书并在连接字符串中指定它。
解决这两个问题的最简单方法是打开启用加密和压缩的VPN隧道。简单的Microsoft PPTP解决了这两个问题,并且易于设置。
答案 2 :(得分:2)
我认为SQL服务器连接中没有实现压缩 - 如果您需要压缩数据,则在与服务通信时应使用Web服务和HTTP压缩。
答案 3 :(得分:2)
我知道这个问题已经超过一年了,但我发现自己正在寻找这个,所以我想我会分享我发现的东西。有这种(相当昂贵的)软件压缩SQL服务器流量。我正在为我的一个客户测试它,它运行良好,平均压缩率达到60%。
http://www.nitrosphere.net/store/nitroaccelerator
它还与未安装此服务的客户端兼容。
答案 4 :(得分:1)
在这种情况下,我建议使用Web服务或WCF发送数据,而不是使用连接到数据库。
答案 5 :(得分:1)
答案 6 :(得分:1)
如果你想创建一个带有压缩和加密的隧道(可以禁用以保存进程)而不必创建一个vpn,并且也是为了你喜悦的交叉平台,这里你有一个充当客户端服务器并使用监听ports all life还可以作为隧道使用单个端口作为管理远程连接和端口的通道,这个工具存在于10年前:http://www.winton.org.uk/zebedee/
我正在做实验来压缩(在第3级)连接未加密的SQL Server,并且我获得了良好的比率调整和压缩级别,让孩子花费大量查询的意图可能的数据为有限的渠道...... 已更新:https://sourceforge.net/projects/zebedee/
答案 7 :(得分:1)
我们目前还通过WAN网络测试NitroSphere软件,压缩率为73%,速度也有很大提升。
我的观点是,与SQL Server许可,Riverbed设备和MPLS WAN连接相比,该软件实际上更便宜。因此,如果您遇到带宽问题,请务必查看。它也支持加密,但我们不打算使用它,因为一切都将保留在内部MPLS网络上。