[备忘]SQL语句终止正在使用中的数据库
网上找了一些资料,发现都有各自缺点和不兼容性,综合了一下,在SQL2005和2008下测试通过:
/// <summary>
/// 终止正在被占用的数据库进程
/// </summary>
/// <param name="connectionStr">连接字符串</param>
/// <param name="dataBaseName">数据库名称</param>
private static void KillProcessInUse(string connectionStr, string dataBaseName)
{
SqlConnection conn;
conn = new SqlConnection(connectionStr);
conn.Open();
string sql1 = "select spid from master..sysprocesses where dbid=db_id('" + dataBaseName + "')";
SqlDataAdapter Da = new SqlDataAdapter(sql1, conn);
DataTable spidTable = new DataTable();
Da.Fill(spidTable);//把进程名称放到DataTable中
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
cmd.CommandText = "use master";//关闭用户进程语句
cmd.ExecuteNonQuery();
//强制结束掉所有链接AnalysisSystem数据库的进程
for (int irow = 0; irow < spidTable.Rows.Count; irow++)//这里Count-1也可以
{
try
{
int spid = Convert.ToInt32(spidTable.Rows[irow][0]);
if (spid < 50)
{
continue;
}
cmd.CommandText = "kill " + spid;//关闭用户进程语句
cmd.ExecuteNonQuery();
}
catch
{
//TODO:Log
}
}
conn.Close();
conn.Dispose();
/// 终止正在被占用的数据库进程
/// </summary>
/// <param name="connectionStr">连接字符串</param>
/// <param name="dataBaseName">数据库名称</param>
private static void KillProcessInUse(string connectionStr, string dataBaseName)
{
SqlConnection conn;
conn = new SqlConnection(connectionStr);
conn.Open();
string sql1 = "select spid from master..sysprocesses where dbid=db_id('" + dataBaseName + "')";
SqlDataAdapter Da = new SqlDataAdapter(sql1, conn);
DataTable spidTable = new DataTable();
Da.Fill(spidTable);//把进程名称放到DataTable中
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
cmd.CommandText = "use master";//关闭用户进程语句
cmd.ExecuteNonQuery();
//强制结束掉所有链接AnalysisSystem数据库的进程
for (int irow = 0; irow < spidTable.Rows.Count; irow++)//这里Count-1也可以
{
try
{
int spid = Convert.ToInt32(spidTable.Rows[irow][0]);
if (spid < 50)
{
continue;
}
cmd.CommandText = "kill " + spid;//关闭用户进程语句
cmd.ExecuteNonQuery();
}
catch
{
//TODO:Log
}
}
conn.Close();
conn.Dispose();
}
转载请注明出处和作者,谢谢!
作者:JeffreySu / QQ:498977166
博客:http://szw.cnblogs.com/
Senparc官方教程《微信开发深度解析:微信公众号、小程序高效开发秘籍》,耗时2年精心打造的微信开发权威教程,点击这里,购买正版!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异