2010-11-19 12 views
13

Potrzebuję zmienić nazwę bazy danych, ale nie mogę, ponieważ używają jej inne procesy. Nie dbam o ten proces i muszę go zabić.Serwer sql 2008 Jak mogę rozłączyć wszystkich z mojego db?

Jak usunąć wszystkie połączenia z bazy danych?

+0

starałem się zrobić wszystko co sugeruje, ale otrzymuję DB jest otwarty alr3ady i może mieć tylko jednego użytkownika atime –

+1

Nie próbuj zmienić jego nazwy za pomocą Eksploratora obiektów, który będzie korzystał z innego połączenia. Musisz użyć TSQL. –

Odpowiedz

23

Jak na mój komentarz raz w single_user tryb trzeba wykonać polecenie Zmień nazwę z tego samego połączenia. Nie próbuj zmieniać nazwy w Eksploratorze obiektów, ponieważ spróbuje otworzyć nowe połączenie. Następujące prace to koniec ...

ALTER DATABASE AdventureWorks SET single_user WITH ROLLBACK IMMEDIATE 

ALTER DATABASE AdventureWorks MODIFY NAME = NewAdventureWorks 

ALTER DATABASE NewAdventureWorks SET multi_user 
+0

Pamiętaj, że działa to w przypadku MS SQL 2005 i nowszych wersji. Dla tych, którzy nadal działają w poprzedniej wersji, musielibyśmy użyć 'EXEC sp_dboption 'nazwa DB', 'pojedynczy użytkownik', 'TRUE'' – Nux

2

Uruchom sp_who, a następnie zabij [pid] dla wszystkich w bazie danych.

+5

Jest to uciążliwe, kłopotliwe, a podczas tego 500 kolejnych spidorów może połączyć się z serwerem. Czy kiedykolwiek grasz w whack-a-mole? Ustaw bazę danych na SINGLE_USER - jest to pojedyncze polecenie i blokuje nowe połączenia. –

0

To działało w porządku dla mnie, aby zmienić nazwę bazy danych i siła rozłączania wszystkich:

ALTER DATABASE [old_name] 
    SET SINGLE_USER WITH ROLLBACK IMMEDIATE 
GO 
ALTER DATABASE [old_name] 
    MODIFY NAME = [new_name] 
GO 
ALTER DATABASE [new_name] 
    SET MULTI_USER 
GO 
Powiązane problemy