SqlServer关于“无法删除数据库 "XXXX",因为该数据库当前正在使用”问题的解决方案
引言
在项目中,通过使用SQL语句“DROP DATABASE [数据库名]”删除数据时,一直出现“无法删除数据库 "XXXX",因为该数据库当前正在使用”的错误信息,经测试在SqlSever数据库客户端中,直接执行该Sql语句可以正常执行,但是通过OLEDB执行该Sql语句,就出现上述错误,笔者查阅相关文档,找到了解决该问题的方法。
解决方法
将要删除的数据库设置库单用户模式和设置立即回滚,具体SQL语句如下:
USE [master] ALTER DATABASE [数据库名] SET SINGLE_USER WITH ROLLBACK IMMEDIATE DROP DATABASE [数据库名]
封装删除数据库如下:
public static bool DeleteSqlServerDB(string serverCon, string dbName) { bool bSuccess = false; try { using (SqlConnection conMaster = new SqlConnection(serverCon)) { conMaster.Open(); string strExist = @"select * from dbo.sysdatabases where name='" + dbName + @"'"; SqlCommand cmdExist = new SqlCommand(strExist, conMaster); SqlDataReader readerExist = cmdExist.ExecuteReader(); bool bExist = readerExist.HasRows; readerExist.Close(); if (bExist) { var cmd = new SqlCommand( $" USE [master] ALTER DATABASE [{dbName}] SET SINGLE_USER WITH ROLLBACK IMMEDIATE DROP DATABASE [{dbName}]", conMaster); cmd.ExecuteNonQuery(); } conMaster.Close(); } bSuccess = true; } catch (Exception e) { bSuccess = false; } return bSuccess; }
注:SqlCommand可以一次执行多条sql语句,每条sql语句直接用空格或者“;”分开。
总结
在数据库操作过程中,我们会遇到千奇百怪的错误,不断的学习和总结才是我们步入下个阶段的必经之路!如果该文对您有所帮助,请点个关注支持下!
作者:码探长
公众号:码探长
如果你想得到探长更多相关技术文章的消息推送,或者获取相关下载资源,可以扫描左边二维码(或者长按识别二维码)关注个人公众号)。
本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。