Używam tego zapytania, aby zmienić nazwę bazy danych:
ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]
Ale pokazuje błąd podczas wykonywania:
Msg 5030, poziom 16, stan 2, wiersz 1
Nie można zablokować bazy danych na wyłączność w celu wykonania operacji.
Czy coś jest nie tak z moim zapytaniem?
sql
sql-server
sql-server-2008-r2
Vikram Bose
źródło
źródło
Odpowiedzi:
Możesz spróbować ustawić bazę danych w trybie pojedynczego użytkownika.
https://stackoverflow.com/a/11624/2408095
źródło
WITH ROLLBACK IMMEDIATE
konieczne. Jeśli w ogóle go nie użyję, czy spowoduje to problemy?WITH ROLLBACK IMMEDIATE
podczas zmiany bazy danych, na której mogą pracować inni użytkownicy, aby zapewnić integralność tych operacji. Ale nie jest to konieczne przy ponownym ustawianiu bazy danych w trybie MULTI_USER, ponieważ baza danych jest już w trybie SINGLE_USER i i tak jesteś jedynym użytkownikiem, który może wykonywać jakiekolwiek transakcje.Ustaw bazę danych w trybie pojedynczym:
Spróbuj zmienić nazwę bazy danych:
Ustaw bazę danych w trybie wielu użytkowników:
źródło
WITH ROLLBACk IMMEDIATE
dla wielu użytkowników?W programie SQL Server Management Studio (SSMS) :
Możesz także kliknąć bazę danych prawym przyciskiem myszy w Eksploratorze obiektów i przejść do Właściwości . Następnie przejdź do opcji . Przewiń do samego końca i ustaw Ogranicz dostęp do SINGLE_USER . Zmień nazwę bazy danych, a następnie wróć i ustaw ją z powrotem na MULTI_USER .
źródło
Spróbuj najpierw zamknąć wszystkie połączenia z bazą danych:
Zaczerpnięte stąd
źródło
To zrobiło to dla mnie:
źródło
Dzieje się tak, ponieważ ktoś inny uzyskuje dostęp do bazy danych. Przełącz bazę danych w tryb pojedynczego użytkownika, a następnie zmień jej nazwę.
To łącze może pomóc:
http://msdn.microsoft.com/en-IN/library/ms345378(v=sql.105).aspx
a także:
http://msdn.microsoft.com/en-us/library/ms345378.aspx
źródło
Zmień bazę danych na tryb pojedynczego użytkownika, jak pokazano w innych odpowiedziach
Czasami nawet po konwersji do trybu pojedynczego użytkownika może być używane jedyne dozwolone połączenie z bazą danych.
Aby zamknąć połączenie nawet po konwersji do trybu pojedynczego użytkownika, spróbuj:
Spójrz na wyniki i zobacz identyfikator połączenia z daną bazą danych.
Następnie użyj poniższego polecenia, aby zamknąć to połączenie (powinno być tylko jedno, ponieważ baza danych jest teraz w trybie pojedynczego użytkownika)
Zastąp connection_id identyfikatorem w wynikach pierwszego zapytania
źródło
1. baza danych ustawia pierwszy tryb pojedynczego użytkownika
ALTER DATABASE BOSEVIKRAM SET SINGLE_USER Z NATYCHMIASTOWYM ROLLBACK
2. ZMIEŃ NAZWĘ BAZY DANYCH
ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]
3. USTAWIENIA DANYCH TRYBU MULIUSERA
ALTER DATABASE BOSEVIKRAM_Deleted USTAW MULTI_USER Z ROLLBACK NATYCHMIAST
źródło
Inny sposób na zamknięcie wszystkich połączeń:
Narzędzia administracyjne> Wyświetl usługi lokalne
Zatrzymaj / uruchom usługę „SQL Server (MSSQLSERVER)”
źródło
źródło