繁体   English   中英

C#SqlConnection缓存DNS

[英]C# SqlConnection caching DNS

我们正在将数据库移至新的数据中心。 我的迁移计划是更新所有客户端连接到它时使用的DNS记录。

我已经通过启动一个循环执行以下操作的过程进行了测试:

  1. 使用DNS条目作为服务器名称打开新的SQL连接
  2. 使用该连接执行查询
  3. 关闭并配置SQL连接

在运行的同时,我更新DNS条目以指向新服务器。

除非停止并重新启动该过程,否则查询将继续对旧服务器执行。

在使用HttpClient发送Web请求时,我尝试了相同的方法,这似乎每2分钟刷新一次DNS,但是SqlConnection对象会挂起到原始分辨率,直到重新启动整个过程为止。 我认为这是因为连接是池化的,并且当它从池中获取连接时不会重新验证DNS条目。

理想情况下,我希望避免在迁移过程中不得不回收应用程序池并重新启动服务。 其他人有没有经历过这种行为? 如果是这样,您是否找到了一种方法来强制SqlConnection重新评估它用作服务器名称的DNS条目?

使用连接池时,将重新使用连接和基础会话,直到从池中删除连接并创建一个新的会话为止。 您可以通过调用SqlConnection.ClearAllPools清除当前应用程序域的池来强制清除连接池。 您也可以使用Pooling=False连接字符串关键字完全关闭连接池,但是请注意,性能影响可能很大。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM