Web design and hosting, database, cloud and social media solutions that deliver business results
  • Rozwiązania biznesowe
    • Oprogramowanie
    • Projektowanie stron
      • Bezpieczeństwo witryny
      • Lokalizacja i tłumaczenie stron internetowych
    • Usługi baz danych
      • Integracja danych
      • Przybory
    • Zrobotyzowana automatyzacja procesów
    • Usługi biznesowe
      • Microsoft Azure
    • Media Społecznościowe
    • Microsoft Office
  • Akademia
    • Nasze środowisko testowe
    • Nauka projektowania baz danych
      • Używanie funkcji datownika SQL Server
      • SQL Server 2008 planu konserwacji
      • Korzystanie z funkcji serwera SQL Server
      • Korzystanie z programu SQL Server Pivot-Unpivot
      • Używanie dat serwera SQL
    • Nauka projektowania stron internetowych
      • CSS
      • ASP-NET
      • Korzystanie z JavaScript
    • Nauka w chmurze i usługi IT
      • Błąd harmonogramu zadań 2147943645
      • Żądanie SSL i generowanie pliku PFX w OpenSSL Simple Steps
  • O
    • Portfel Pracy
    • Zespół
      • Adrian Anandan
      • Ali Al Amine
      • Ayse Hur
      • Chester Copperpot
      • Gavin Clayton
      • Sai Gangu
      • Suneel Kumar
      • Surya Mukkamala
عربى (AR)čeština (CS)Deutsch (DE)English (EN-US)English (EN-GB)Español (ES)فارسی (FA)Français (FR)हिंदी (HI)italiano (IT)日本語 (JA)polski (PL)Português (PT)русский (RU)Türk (TR)中国的 (ZH)

Zapisana procedura zabijania wszystkich połączeń z wybraną bazą danych lub serwerem

Procedura składowana SQL zabijająca wszystkie połączenia z wybraną bazą danych lub serwerem z wyjątkiem procesu, który ją wywołuje.

Wprowadzenie

Może się zdarzyć, że zajdzie potrzeba odłączenia wszystkich użytkowników od bazy danych, jednym z przykładów jest replikacja Log Shipping. Poniższy kod został użyty na serwerze raportującym, który był aktualizowany co 20 minut, ponieważ baza danych musi być otwierana w trybie wyłączności przez zadanie przywracania.

Poniższy kod akceptuje nazwę bazy danych, więc wystarczy ją zapisać tylko raz i zapisać w bazie danych master lub narzędzi (jeśli ją utworzyłeś). Następnie można go wywołać z dowolnego innego procesu, w naszym przypadku pełnego planu konserwacji w dokumencie powyżej.

Jest to dość prosta procedura składowana, która po prostu pobiera listę aktywnych połączeń i pętli przez każde z nich, zabijając proces i połączenie.

SQL Code

CREATE PROC maint.KillConnections(@database VARCHAR(50)) AS BEGIN
SET NOCOUNT ON;
DECLARE @spid INT
DECLARE @killstatement NVARCHAR(10)--Declare a cursor to select the users connected to the specified database
DECLARE c1 CURSOR FAST_FORWARD FOR SELECT request_session_id                    
FROM sys.dm_tran_locks
WHERE resource_type='DATABASE'
AND (DB_NAME(resource_database_id)=@database OR @database IS NULL)
OPEN c1
FETCH c1 INTO @spid
WHILE @@FETCH_STATUS= 0 BEGIN
      IF @@SPID<>@spid--Don't kill the connection of the user executing this statement
      BEGIN
            -- Construct dynamic sql to kill spid
            SET @killstatement ='KILL '+CAST(@spid AS VARCHAR(5))
            EXEC sp_executesql @killstatement
            PRINT @spid -- Print killed spid           
      END
      FETCH NEXT FROM c1 INTO @spid
END
-- Clean up
CLOSE c1
DEALLOCATE c1
END
GO

Author

Was this helpful?

Please note, this commenting system is still in final testing.
Copyright Claytabase Ltd 2020

Registered in England and Wales 08985867

RSSLoginLink Polityka Cookiemapa strony

Social Media

facebook.com/Claytabaseinstagram.com/claytabase/twitter.com/Claytabaselinkedin.com/company/claytabase-ltd

Get in Touch

+442392064871info@claytabase.comClaytabase Ltd, Unit 3d, Rink Road Industrial Estate, PO33 2LT, United Kingdom
Ustawienia na tej stronie są ustawione tak, że wszystkie pliki cookie. Mogą one być zmieniane na naszej polityki i ustawień strony z ciasteczkami. Dalsze korzystanie z tej strony, wyrażasz zgodę na korzystanie z plików cookie.
Ousia Logo
Logout
Ousia CMS Loader