我需要从我的应用程序执行数据库恢复。在这样做之前,我想杀死所有进程,如下所示:
private void KillAllProcessesOnSMARTDatabases(Server targetServer)
{
targetServer.KillAllProcesses(SMART_DB);
targetServer.KillAllProcesses(SMART_HISTORY_DB);
targetServer.KillAllProcesses(SMART_METADATA_DB);
SqlConnection.ClearAllPools();
}
但是,当第一个 KillAllProcesses 运行时,我得到以下异常:
Microsoft.SqlServer.Management.Smo.FailedOperationException:删除服务器“MYServer”的所有活动数据库连接失败。---> Microsoft.SqlServer.Management.Common.ExecutionFailureException:执行 Transact-SQL 语句或批处理时发生异常。---> System.Data.SqlClient.SqlException:只能杀死用户进程。
用于创建服务器的连接字符串具有 sa 凭据,但是,需要终止的进程是在不同的用户下启动的。我测试了类似的场景,测试成功了。
这种情况最近才开始发生。对我来说,似乎有一些进程不是由用户启动的?