Jestem obecnie próbuje upuść bazę danych za pomocą następującego koduNiezawodnie upuść bazę danych na SQL Server 2008 za pośrednictwem C#
using Microsoft.SqlServer.Management.Smo;
var server = new Server(Server);
server.KillAllProcesses("Db");
server.KillDatabase("Db");
Czasem to działa, ale inni otrzymuję następujący wyjątek:
Microsoft.SqlServer.Management.Smo.FailedOperationException: Zabrakło bazy danych Kill dla serwera "Host1".
---> Microsoft.SqlServer.Management.Common.ExecutionFailureException: Wystąpił wyjątek podczas wykonywania instrukcji lub wsadu Transact-SQL.
---> System.Data.SqlClient.SqlException: Nie można teraz wprowadzić zmian stanu lub opcji bazy danych "Db". Baza danych jest w trybie pojedynczego użytkownika, a użytkownik jest z nią połączony.
Jakieś pomysły, w jaki sposób rzetelnie upuścić bazę danych za pomocą kodu?
Próbowałeś ' ALTER DATABASE Db SET MULTI_USER; 'first? –
Osobiście nie używałbym do tego SMO, głównie dlatego, że nie wiem dokładnie, co robią funkcje 'Kill ...()'. Powiedziałbym raczej 'USE master; ZMIENIAJ BAZY DAB USTAWIĆ SINGLE_USER WITH ROLLBACK IMMEDIATE; DROP DATABASE Db; ' –
Baza danych nie jest domyślnie ustawiona jako SingleUser, myślę, że nieudana próba w metodzie KillDatabase polega na przekształceniu go w pojedynczego użytkownika, a następnie pozostawieniu go w ten sposób. – Konstantinos