SQL Server 2008 - zamykanie aktywnych połaczeń do bazy


(andrzej20) #1

Witam!

Aby definitywnie usunąć bazę danych z serwera nie może ona być w użyciu. Czyli wszystkie aktywne połaczenia

muszą być zamknięte. Jaka jest instrukcja w T-SQLu zamykająca wszystkie aktywne połączenia do wybranej bazy?

Szukałem w różnych żródłach i nie mogę tego znaleźć.

Managment Studio tworzy taki kod:

EXEC msdb.dbo.sp_delete_database_backuphistory @database_name = N'test4'

GO

USE [master]

GO

/******Object: Database [test4] Script Date: 07/29/2011 13:10:48******/

DROP DATABASE [test4]

GO

Ale to nie działa, nie są zamykane aktywne połączenia w związku z czym bazki nie da się usunąć z serwera.

Proszę o pomoc.


(Ryan) #2

Możesz zrobić 2 rzeczy.

  1. Przestać korzystać z bazy w aplikacji i poczekać aż połączenia wygasną.

  2. Przestawić bazę w tryb SINGLE_USER.

W przypadku drugim, o ile wiem, istotne jest z jakiego konta program dostaje się do bazy. Nic nie wskórasz włączając SINGLE_USER, jeśli korzystasz z tego samego konta, co aplikacja. Chyba. :wink:


(Saracen) #3
ALTER DATABASE baza SET SINGLE_USER WITH ROLLBACK IMMEDIATE

DROP DATABASE baza

lub

ALTER DATABASE baza SET OFFLINE WITH ROLLBACK IMMEDIATE

DROP DATABASE baza
  • w tym przypadku pliki baz nie zostaną usunięte z dysku.