zoukankan      html  css  js  c++  java
  • 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语句直接用空格或者“;”分开。

    总结

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

  • 相关阅读:
    Nginx进程信号管理
    Nginx配置缓存服务器
    访问Nginx显示目录
    kubeadm快速安装k8s
    《构建之法》读书笔记(一)
    Android Studio连接SQLite数据库与SQLite Studio实时同步的实现
    关于sqlite数据库与sqlite studio
    AS之去掉顶部标题栏
    今日学习
    AS之AlertDialog使用
  • 原文地址:https://www.cnblogs.com/aizai846/p/11431296.html
Copyright © 2011-2022 走看看