C# Can';在Insert语句期间发生异常后,不能删除SQL数据库
我正在处理的应用程序遇到了问题。下面是正在发生的事情的细目C# Can';在Insert语句期间发生异常后,不能删除SQL数据库,c#,sql-server,sqlclient,C#,Sql Server,Sqlclient,我正在处理的应用程序遇到了问题。下面是正在发生的事情的细目 通过代码创建新数据库(成功) 连接到新创建的数据库并创建表(也成功) 将数据插入以前创建的表(此操作失败,出现异常) 向用户显示错误消息 在主数据库上打开一个新连接 删除在步骤1中创建的数据库 由于以下原因,步骤6失败: System.Data.SqlClient.SqlException:无法删除数据库“ImportFail”,因为它当前正在使用中 如果您有未关闭的连接或使用了要删除的数据库上的连接,则错误消息有点意义,但据我所知,情
SqlCommand
)的创建将通过以下方法进行。我不明白为什么任何连接会在这里徘徊,即使是在例外情况下
添加
SqlConnection.clearlallpools()代码>在异常之后。此静态方法将物理关闭并删除池连接,池连接持有数据库上到期的共享锁,以防止数据库被丢弃
请注意,关闭/处理连接只会返回到池的连接,单靠它是不够的。AddSqlConnection.clearlallpools()代码>在异常之后。此静态方法将物理关闭并删除池连接,池连接持有数据库上到期的共享锁,以防止数据库被丢弃
请注意,关闭/处理连接只会返回到池的连接,单靠它是不够的。尝试添加SqlConnection.clearlallpools()代码>在异常之后。嗨@DanGuzman-刚刚尝试过,它成功了,谢谢你:我想写这个作为答案,这样我就可以奖励你了?@Codexer-不是。如上所述,每个查询或命令都经过一个中间层,该层管理连接/命令的生命周期。见上图。另外,调用ClearAllPools可以使它立即工作。如果在删除之前,您运行命令alterdatabaseimportfail SET SINGLE_USER WITH rollbackimmediate代码>?尝试添加SqlConnection.ClearAllPools()代码>在异常之后。嗨@DanGuzman-刚刚尝试过,它成功了,谢谢你:我想写这个作为答案,这样我就可以奖励你了?@Codexer-不是。如上所述,每个查询或命令都经过一个中间层,该层管理连接/命令的生命周期。见上图。另外,调用ClearAllPools可以使它立即工作。如果在删除之前,您运行命令alterdatabaseimportfail SET SINGLE_USER WITH rollbackimmediate代码>?