Для того, чтобы отделить базу данных и в то же время решить ошибку
Cannot detach the database 'YOUR_DATABASE' because it is currently in use
вы можете просто использовать следующий код:
private void DetachDatabase()
{
String databaseConnectionString = "Data Source=localhost;MultipleActiveResultSets=True;Integrated Security=True";
using (SqlConnection sqlDatabaseConnection = new SqlConnection(databaseConnectionString))
{
try
{
sqlDatabaseConnection.Open();
string commandString = "ALTER DATABASE YOUR_DATABASE SET OFFLINE WITH ROLLBACK IMMEDIATE ALTER DATABASE YOUR_DATABASE SET SINGLE_USER EXEC sp_detach_db 'YOUR_DATABASE'";
SqlCommand sqlDatabaseCommand = new SqlCommand(commandString, sqlDatabaseConnection);
sqlDatabaseCommand.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
Обратите внимание, что YOUR_DATABASE иногда написанные без одинарных кавычек, а иногда и с одиночными кавычками. Только замените YOUR_DATABASE с именем базы данных без .mdf расширения и оставить остальные строки, как это ...
Благодаря этому сайт: Detach database dropping connections
И этот сайт: SQL Server – How to Detach a Database
Кстати, это сработало для меня на SQL SERVER 2014
Кроме того, sp_detach_db принимает имя базы данных (оно должно быть действительным значением sysname), а не путь к файлу. –
Да, пропустил это. Обновлен мой ответ. Спасибо, что заметили! – Ruslan
Спасибо. Но теперь эта ошибка: невозможно отсоединить базу данных «D: \ MDF CONNECTION SAMPLE \ BIN \ DEBUG \ HARMDATABASE.MDF», поскольку она в настоящее время используется. – user3812553