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

摘要:
引言在项目中,通过使用SQL语句“DROPDATABASE[数据库名]”删除数据时,一直出现“无法删除数据库"XXXX",因为该数据库当前正在使用”的错误信息,经测试在SqlSever数据库客户端中,直接执行该Sql语句可以正常执行,但是通过OLEDB执行该Sql语句,就出现上述错误,笔者查阅相关文档,找到了解决该问题的方法。总结在数据库操作过程中,我们会遇到千奇百怪的错误,不断的学习和总结才是我们步入下个阶段的必经之路!

引言

在项目中,通过使用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, stringdbName)
        {
            bool bSuccess = false;
            try
            {
                using (SqlConnection conMaster = newSqlConnection(serverCon))
                {
                    conMaster.Open();
                    string strExist = @"select * from dbo.sysdatabases where name='" + dbName + @"'";
                    SqlCommand cmdExist = newSqlCommand(strExist, conMaster);
                    SqlDataReader readerExist =cmdExist.ExecuteReader();
                    bool bExist =readerExist.HasRows;
                    readerExist.Close();
                    if(bExist)
                    {
                        var cmd = newSqlCommand(
                            $"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;
            }
            returnbSuccess;
        }

注:SqlCommand可以一次执行多条sql语句,每条sql语句直接用空格或者“;”分开。

总结

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

免责声明:文章转载自《SqlServer关于“无法删除数据库 "XXXX",因为该数据库当前正在使用”问题的解决方案》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Profibus 接线response 设置响应头的常用几种方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

大型php网站性能和并发访问优化方案

网站性能优化对于大型网站来说非常重要,一个网站的访问打开速度影响着用户体验度,网站访问速度慢会造成高跳出率,小网站很好解决,那对于大型网站由于栏目多,图片和图像都比较庞大,那该怎么进行整体性能优化呢?本文为你提供一份大型php网站性能和并发访问优化方案. 一、大型网站性能提高策略: 大型网站,比如门户网站,在面对大量用户访问、高并发请求方面,基本的解决方案...

DBeaver连接达梦数据库

1、连接类型选择ODBC。 2、编辑驱动设置:   1)Class Name:dm.jdbc.driver.DmDriver   2)URL Template:jdbc:dm://{dbserver}/{database}。例如:jdbc:dm://192.168.101.222/UFFICE   3)Default Port:{dbport}   4)L...

第12组 Alpha冲刺 (1/6)(组长)

1.1基本情况 ·队名:美少女战士 ·组长博客:https://www.cnblogs.com/yaningscnblogs/p/13948281.html ·作业博客:https://edu.cnblogs.com/campus/fzu/FZU_SE_KClass/homework/11440 ·组员人数:7人 1.2冲刺情况汇报 吴凝(组长) 燃尽图...

jeecg中列表查询数据关联其他表的显示

1.A表字段:id,name;B表字段:id,name,fid(A表外键),现查询A表和B表的所有数据并且查询条件A,B都有,在前台页面list显示 2.后台方法: @RequestMapping(params = "datagrid_zh") public void datagrid_zh(CarRouteEntity ldcHandbookOrder...

Django根据数据库表反向生成models

一.反向生成model执行以下命令: python  manage.py  inspectdb 二.将model导入到相应的App的model.py文件里执行以下命令: python manage.py inspectdb > App/models.py  ...

Android studio实现简单的CRUD

1.打开Android studio ,创建项目DataBase01 2.进行UI设计,如图 目的:实现对姓名及其爱好的增删改查 3.创建DB.java,用于创建数据库,并做相关操作 在该目录下右键->new->java class 点击OK,创建成功。创建成功后,会有红线标识错误 选择Implement method ,导入onCrea...