引言
在項目中,通過使用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語句直接用空格或者“;”分開。
總結
在數據庫操作過程中,我們會遇到千奇百怪的錯誤,不斷的學習和總結才是我們步入下個階段的必經之路!如果該文對您有所幫助,請點個關注支持下!