建立資料庫、建表失敗後欲刪除資料庫,提示「資料庫正在使用中」。需先斷開所有連線再刪除。
USE MASTER;
GO
DECLARE @dbname SYSNAME = 'YourDbName';
DECLARE @sql NVARCHAR(MAX) = '';
-- 殺掉所有佔用該資料庫的連線
SELECT @sql = @sql + 'KILL ' + CAST(spid AS VARCHAR) + '; '
FROM sys.sysprocesses
WHERE dbid = DB_ID(@dbname);
EXEC sp_executesql @sql;
-- 刪除資料庫
EXEC ('DROP DATABASE [' + @dbname + ']');
GO
using (var conn = new SqlConnection("Server=.;Database=master;Integrated Security=true;"))
using (var cmd = conn.CreateCommand()) {
conn.Open();
cmd.CommandText = @"
DECLARE @dbname SYSNAME = @name;
DECLARE @sql NVARCHAR(MAX) = '';
SELECT @sql = @sql + 'KILL ' + CAST(spid AS VARCHAR) + '; '
FROM sys.sysprocesses WHERE dbid = DB_ID(@dbname);
EXEC sp_executesql @sql;
EXEC ('DROP DATABASE [' + @dbname + ']');
";
cmd.Parameters.AddWithValue("@name", dbName);
cmd.ExecuteNonQuery();
}
master 資料庫執行 DROP。sys.sysprocesses (舊) 或 sys.dm_exec_sessions (新) 取得佔用進程 ID。