SqlServer关于“无法删除数据库 "XXXX",因为该数据库当前正在使用”问题的解决方案

Posted 码探长

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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语句直接用空格或者“;”分开。

总结

在数据库操作过程中,我们会遇到千奇百怪的错误,不断的学习和总结才是我们步入下个阶段的必经之路!如果该文对您有所帮助,请点个关注支持下!

 

以上是关于SqlServer关于“无法删除数据库 "XXXX",因为该数据库当前正在使用”问题的解决方案的主要内容,如果未能解决你的问题,请参考以下文章

关于SQLSERVER的JOINJoin到底有啥用

关于SqlServer连接错误

关于sqlserver存储过程的问题

关于SQLServer2008链接时找不到实例问题解决方案

关于obdc连接sqlserver的问题

关于sqlserver分组求和的问题