アプリケーションからデータベースの復元を実行する必要があります。これを行う前に、次のようにすべてのプロセスを強制終了します。
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:ユーザープロセスのみを強制終了できます。
サーバーの作成に使用される接続文字列には資格がありますが、終了する必要のあるプロセスは別のユーザーで開始されます。同様のシナリオをテストしたところ、テストは成功しました。
これはごく最近になって起こり始めました。私には、ユーザーによって開始されていないいくつかのプロセスが実行されているように見えますか?