Spring.net删除所有的adotemplate连接?

问题描述:

我有一个应用程序通过spring.net AdoTemplate连接到数据库。我负责创建一个恢复数据库方法,它可以让应用程序继续运行,但会丢弃网络连接,从而丢弃旧的数据库并启动新的数据库。我的问题是,我该如何删除此应用程序对此AdoTemplate的所有当前连接?春天1.1我没有看到任何公开的方法来删除网络连接。Spring.net删除所有的adotemplate连接?

什么结束了伟大的工作是:

SqlConnection.ClearAllPools(); 
    // if any connections were being used at the time of the clear, hopefully waiting 
    // 3 seconds will give them time to be released and we can now close them as well 
    Thread.Sleep(3000); 
    //clear again 
    SqlConnection.ClearAllPools(); 

AdoTemplate和SQL数据库之间没有物理“连接”。抛开事务,AdoTemplate为每个从ADO.NET执行的方法创建一个新的SqlConnection对象,然后执行一个命令并处理SqlConnection对象。 在底层,ADO.NET缓存到池中数据库的物理连接。当您创建新的SqlConnection对象时,将从池中获取其中一个缓存的物理连接,以便为该SqlConnection提供服务。 这意味着,你需要一个不同的策略来解决你的问题。我想到的一个策略是从sysprocesses数据库获取活动连接列表,并在其上执行KILL语句。短谷歌搜索带来了这个article。请注意,这篇文章引用了mssql 2000.我敢肯定,你需要更多的谷歌才能找到2005年的解决方案。自2005年以来,不允许再访问系统表。

心连心, 埃里希