将 SqlConnection 绑定到本地 IP 端点?
Bind SqlConnection to local IP End Point?
假设您指定了 TCP 协议,是否可以像绑定套接字一样将 SqlConnection
绑定到本地 IP 端点? (是否有我可以以某种方式访问的 TCP SqlConnection
的底层套接字?)
目标是强制与一台可能有多个网络适配器的特定网络适配器建立连接。我确定第一个自然问题将是 "why" 以努力指出替代解决方案,但我不寻求替代方案。我只是想知道这是否可能。谢谢。
这正是路由表的用途。如果您的网络适配器配置正确,则无需在应用程序级别处理此问题。
就是说,SqlConnection
一开始甚至不必使用 Socket
s - 这是常见的 class 处理与 SQL 服务器的任何连接那是可能的。例如,这可以是直接套接字连接或命名管道。连接也可以合并。
连接字符串中没有允许您执行此操作的设置。这几乎结束了强制使用本地端点进行套接字连接的任何合理方式。这真的不应该那么令人惊讶,因为应用程序根本不应该处理这样的事情。
通过相关资源,很明显,即使实际上有套接字,它也不是 .NET Socket
- 所以即使使用反射,你也没有任何办法影响它, 例如。剩下的唯一方法是在 winsock(或者可能是 SQL 客户端 DLL)上安装一个 DLL 钩子并拦截连接调用;当然,这是一个非常孤注一掷的举动,如果你尝试的话会给你带来很多麻烦 - 更不用说它需要使用本机代码,而且它非常脆弱(而且肯定会给其他应用程序带来麻烦,不只是你的)。
肯定有更好的方法来处理您的情况。但是因为你是 not looking for alternatives
,这是我得到的最好的。
假设您指定了 TCP 协议,是否可以像绑定套接字一样将 SqlConnection
绑定到本地 IP 端点? (是否有我可以以某种方式访问的 TCP SqlConnection
的底层套接字?)
目标是强制与一台可能有多个网络适配器的特定网络适配器建立连接。我确定第一个自然问题将是 "why" 以努力指出替代解决方案,但我不寻求替代方案。我只是想知道这是否可能。谢谢。
这正是路由表的用途。如果您的网络适配器配置正确,则无需在应用程序级别处理此问题。
就是说,SqlConnection
一开始甚至不必使用 Socket
s - 这是常见的 class 处理与 SQL 服务器的任何连接那是可能的。例如,这可以是直接套接字连接或命名管道。连接也可以合并。
连接字符串中没有允许您执行此操作的设置。这几乎结束了强制使用本地端点进行套接字连接的任何合理方式。这真的不应该那么令人惊讶,因为应用程序根本不应该处理这样的事情。
通过相关资源,很明显,即使实际上有套接字,它也不是 .NET Socket
- 所以即使使用反射,你也没有任何办法影响它, 例如。剩下的唯一方法是在 winsock(或者可能是 SQL 客户端 DLL)上安装一个 DLL 钩子并拦截连接调用;当然,这是一个非常孤注一掷的举动,如果你尝试的话会给你带来很多麻烦 - 更不用说它需要使用本机代码,而且它非常脆弱(而且肯定会给其他应用程序带来麻烦,不只是你的)。
肯定有更好的方法来处理您的情况。但是因为你是 not looking for alternatives
,这是我得到的最好的。