Detach Database и Clear Connections using this database.

sergei.knyazev
Дата: 05.12.2004 13:56:43
Возникают проблемы при детаче базы, которой сделали SqlConnection.Close();
MSSQL говорит что база ещё используется.

В Enterprise Manager есть в окошке Detach Database кнопка Clear, которая will end all active transactions in this database which is required before the database can be detached. И после этого база детачится «на ура». Очень хотелось бы научиться делать такое в коде.

Не подскажите, что она такое волшебное делает?
кузя
Дата: 05.12.2004 17:11:55
string dbname="TestOff"; // имя отключаемой БД
			
SqlCommand    cm;
// подключамся к БД master
SqlConnection cn=new SqlConnection("Integrated Security=SSPI;Initial Catalog=master;Data Source=STORAGE;");
cn.Open();
try
{  // переводим базу в режим одного пользователя (себя любимого :)
  cm=new SqlCommand("ALTER DATABASE "+dbname+" SET SINGLE_USER WITH ROLLBACK IMMEDIATE", cn);
  cm.ExecuteNonQuery();
  // отключаем базу от сервера
  cm=new SqlCommand("sp_detach_db '"+dbname+"'", cn);			
  cm.ExecuteNonQuery();
}
catch(Exception ex)
{ /* обработка ошибок */
}
cn.Close();
ziktuw
Дата: 08.12.2004 10:08:44
SqlConnection.Close(); - и коннект ушел в спул примерно на минуту, т.е. подключение к базе еще существует и детач невозможен.

Попробуй перед закрытием выполнить инструкцию USE master, тогда коннект при закрытии будет висеть минуту на базе master и не мешать делать детач нужной базы.

А можно еще и спулигн выключить - подробности в MSDN на предмет ключей строки соединения (для ADO.NET только)

_________
Свет в конце тоннеля временно потушен по техническим причинам.
Картинка с другого сайта.