Отключить базу данных SQL Server в C#

SqlConnection con = new SqlConnection();
con.ConnectionString = @"Data Source =.; Initial Catalog = master; Integrated Security = True;";
con.Open();

string str = "USE master;" +
"EXEC sp_detach_db @dbname = N'PhoneBookDB'";

SqlCommand cmd = new SqlCommand(str, con);
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Detached", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
Application.Exit();

Я получаю эту ошибку:

Невозможно отсоединить базу данных "PhoneBookDB", потому что она в данный момент используется. Изменен контекст базы данных на "мастер".

Что я должен делать?

1 ответ

Решение

Не могли бы вы попробовать это:

SqlConnection con = new SqlConnection();
con.ConnectionString = @"Data Source =.; Initial Catalog = master; Integrated Security = True;";
con.Open();

string str = "USE master;" +
"ALTER DATABASE PhoneBookDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE; EXEC sp_detach_db @dbname = N'PhoneBookDB'";

SqlCommand cmd = new SqlCommand(str, con);
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Detached", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
    Application.Exit();

Вы также можете попробовать использовать sp_who или же sp_whoisactive найти текущие соединения и убить их.

Другие вопросы по тегам