为 SqlConnection 指定网络适配器

Posted

技术标签:

【中文标题】为 SqlConnection 指定网络适配器【英文标题】:Specifying a network adapter for SqlConnection 【发布时间】:2015-05-03 12:12:04 【问题描述】:

我的机器上有 2 个网卡:

    网络 A 自动分配 IP 地址。

    网络 B 是 SQL Server 所在的位置。

当我使用 C# 连接时,连接是断断续续的。 我可以指定我的 C# 代码来使用特定的网络适配器吗?

SqlConnection myConnection = new SqlConnection(
                                 "user id=username;"
                               + "password=password;"
                               + "server=serverurl;"
                               + "Trusted_Connection=yes;" 
                               + "database=database;"
                               + "connection timeout=30");

【问题讨论】:

没有。两个网络是否共享 IP 方案?如果没有,它应该可以正常工作。如果是这样,您可能会遇到更大的问题。 ip scheme是什么意思? 两个网络上会出现相同的 IP 地址吗?如果是这样,您不知道要查看哪个适配器(通常,不仅适用于 SQL Server) 如果禁用 A,请确保它的不是间歇性的?否则,不,我不知道你的问题出在哪里。 这可以通过配置windows将SQL Server默认端口(1433)路由到想要的网卡来解决。设置路由的方法见***.com/a/11535395/2516770。 【参考方案1】:

在常见情况下,您不能选择网络适配器来手动路由传出流量,因为这可能会破坏您的安全性。只需谷歌搜索“强主机模型”和“弱主机模型”(这取决于 Windows 的操作系统版本和 Linux 的分发来源)。

例如,这是对此事的一个很好的概述:https://blogs.technet.microsoft.com/networking/2009/04/24/source-ip-address-selection-on-a-multi-homed-windows-computer

所以说到底,网卡选择与你无关。如果您的连接不稳定,您必须对网络进行故障排除(路由器故障、吞吐量过载、防火墙检查延迟等)。

【讨论】:

以上是关于为 SqlConnection 指定网络适配器的主要内容,如果未能解决你的问题,请参考以下文章

默认网络数据包大小的差异:SqlConnection 与 SQL Server 默认值

实践三 网络嗅探与协议分析

第七周学习笔记

怎么给无线网卡指定ipv6地址

Winpcap网络开发库入门

Winpcap网络开发库入门