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

總結

在數據庫操作過程中,我們會遇到千奇百怪的錯誤,不斷的學習和總結才是我們步入下個階段的必經之路!如果該文對您有所幫助,請點個關注支持下!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM