Мне нужно восстановить базу данных из моего приложения. Прежде чем сделать это, я хочу убить все процессы следующим образом:
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 учетные данные, однако процессы, которые необходимо завершить, запускаются под другим пользователем. Я протестировал похожий сценарий, и тест прошел успешно.
Это начало происходить только недавно. Мне кажется, есть запущенные процессы, которые не запускаются пользователем?