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语句直接用空格或者“;”分开。

总结

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

原文地址:https://www.cnblogs.com/aizai846/p/11431296.html

时间: 2024-10-15 22:30:44

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

无法打开登录所请求的数据库 "xxxx"。登录失败。 用户 'NT AUTHORITY\SYSTEM' 登录失败。

用户 'IIS APPPOOL\DefaultAppPool' 登录失败. 我在windows8中安装了iis之后添加了我做的网站打开之后提示用户 'IIS APPPOOL\DefaultAppPool' 登录失败. 我再vs2010中能正常运行       最佳答案 这是设置iis应用程序池的设置问题.我就遇到了这样的问题. 比如我的网站取名myweb,就会默认给你建立一个myweb应用程序池一开始报http 404.17错误 解决方案:1. 右键myweb应用程序池,基本设置,选择.net

sqlserver使用job删除过期备份文件

享下链接:http://blog.csdn.net/xieyufei/article/details/33770067(注意这里主要说明怎么设置删除过期备份文件) 先说下sqlserver使用job删除过期备份文件总体思路:①备份数据库文件的时候命名要有规则,如:"PTM_WorkOrder_"+当前时间(年月日)+"_"+当前小时[强调一下:无论你命名规范是什么一定要带上时间] ②删除过期备份文件实质就是使用sql语句删除指定文件(这也是为什么备份文件命名要带上时

【升级至sql 2012】sqlserver mdf向上兼容附加数据库(无法打开数据库 'xxxxx' 版本 611。请将该数据库升级为最新版本。)

sqlserver mdf向上兼容附加数据库(无法打开数据库 'xxxxx' 版本 611.请将该数据库升级为最新版本.) 最近工作中有一个sqlserver2005版本的mdf文件,还没有log文件,现在需要 附加到sqlserver2012,经过网上一顿搜索,把完整的过程奉上,供大家参考 首先创建数据库 再设置数据库的兼容性(经过尝试,此步骤可以省略) 停掉sqlserver 服务,将需要附件的mdf文件替换掉创建数据生成的mdf,删除掉对应的ldf文件 再启动sqlserver 服务 执行

怎样将Sqlserver数据库转成mysql数据库

手上有一个网站之前是用asp.net做的,所使用的数据库是sqlserver,现在打算用PHP+MYSQL架构.因原来的站点有一定排名,直接改版的话,会导致产生很多错误页,网站排名和收录结果要恢复过来就得很久了,且原网站里数据较多,手工转也不现实. 所以现在需要一个将MSSQL转为MYSQL的转移方案,在网上找了很多,要么很复杂,要么根本就不能用(选了几种简单的方法尝试),现在自己测试用下面的方法最简单有效. 本地环境,安装SQLserver 安装MYSQL: 1.MYSQL的工具使用navic

SqlServer定时备份数据库和定时杀死数据库死锁解决

PS:Sqlserver 2008 R2,windows 8 64位 1.备份数据库 因为要备份,我们就要用到Sqlserver的代理,默认数据库的代理是不开启的.需要我们手动开启的. 执行备份数据库脚本,现在将脚本公布,其实将这一段代码中需要保存的文件路径和数据库名称替换一下就可以实现备份了.但是还没有达到定时备份的目的 ? 1 2 3 4 5 6 7 8 9 10 11 --自动备份并保存最近5天的SQL数据库作业脚本 宋彪 20130310 DECLARE @filename VARCHA

如何手动的干净的删除linux上的ORACLE数据库

最近在用VMWARE虚拟机做ORACLE的数据库实验,我们都知道在WINDOWS上,我可以到添加删除程序里去自动删除已经安装的所有的应用程序,但是在LINUX上没有这个服务可以进行自动的删除,于是尝试了下手动的删除ORACLE数据库.具体步骤如下: 1,先查下ORACLE_SID,ORACLE_HOME.ORACLE_BASE的信息: [[email protected] dbs]$ echo $ORACLE_SID PROD [[email protected] dbs]$ echo $ORA

ASP.net分别连接SQLserver数据库与连接Access数据库精英版

-------------------------连接access2003 字符串------------------------- Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Data.mdb 连接access2010 字符串 Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\aa.accdb -------------------------

oracle 11g 手动删除表空间文件导致数据库报错处理方法

简单说下原因:当时图方便没进数据库,直接在datafile目录下删除了表空间对应的数据文件 导致后来数据库报错,并且不能删除表空间 错误如下:ORA-01116:error in opening database ****ORA-01110:data file 54:'/home3/datafile/arrange/NewArrange.dbf'ORA-27041:unable to open fileLinux Error:2: No Such file or directoryAdditio

sql server 2008出现 数据库主体在该数据库中拥有架构,无法删除。 (Microsoft SQL Server,错误: 15138)

在用sql server 2008做数据挖掘时,出现用户无法访问的问题,所以给相应的数据库添加一个登入用户zhang,并赋予相应的权限.在调试时,发现还是存在问题,故想删除这个用户zhang,并新建一个用户.出现错误提示: 数据库主体在该数据库中拥有架构,无法删除. (Microsoft SQL Server,错误: 15138) 解决方案: 先删除此用户对应的架构,然后在删除对应的用户 具体步骤: 1.相应数据库-->安全性-->构架,先删除对应的构架 2.相应数据库-->安全性--&