Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Программно разорвать соединения с SQL Server 2005  [new]
Bigov
Member

Откуда:
Сообщений: 37
Подскажите, пожалуйста, как программно разорвать соединения с базой SQL Server 2005?
Возникает ситуация, когда DROP DATABASE не срабатывает, т.к. базу держат коннекты... их нужно принудительно разорвать.

По сути - это аналог галочки "Закрыть существующие соединения" при удалении из SQL Management Studio
6 окт 09, 11:24    [7746748]     Ответить | Цитировать Сообщить модератору
 Re: Программно разорвать соединения с SQL Server 2005  [new]
mike909
Member

Откуда:
Сообщений: 662
Bigov,

Очень кратко:
KILL @spid
ALTER DATABASE [dbName] set SINGLE_USER WITH ROLLBACK IMMEDIATE
drop database [dbName]

Поробнее - воспользуйтесь поиском по SINGLE_USER
6 окт 09, 11:31    [7746807]     Ответить | Цитировать Сообщить модератору
 Re: Программно разорвать соединения с SQL Server 2005  [new]
pr0ger
Member

Откуда: Москва
Сообщений: 1933
USE MyDatabase 
go
ALTER DATABASE MyDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
6 окт 09, 11:32    [7746808]     Ответить | Цитировать Сообщить модератору
 Re: Программно разорвать соединения с SQL Server 2005  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31173
pr0ger, mike909

SET SINGLE_USER не поможет.
для DROP нужно коннектится не к удаляемой БД, и кто-то другой может захватить коннект.

По моему, нужно по другому:

USE master
go
ALTER DATABASE MyDatabase SET OFFLINE WITH ROLLBACK IMMEDIATE;
DROP DATABASE MyDatabase;
6 окт 09, 12:13    [7747160]     Ответить | Цитировать Сообщить модератору
 Re: Программно разорвать соединения с SQL Server 2005  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 5184
alexeyvg
pr0ger, mike909

SET SINGLE_USER не поможет.
для DROP нужно коннектится не к удаляемой БД, и кто-то другой может захватить коннект.

По моему, нужно по другому:

USE master
go
ALTER DATABASE MyDatabase SET OFFLINE WITH ROLLBACK IMMEDIATE;
DROP DATABASE MyDatabase;


подключиться смогут только sysadmin-ы

ALTER DATABASE MyDatabase SET EMERGENCY WITH ROLLBACK IMMEDIATE
6 окт 09, 12:39    [7747354]     Ответить | Цитировать Сообщить модератору
 Re: Программно разорвать соединения с SQL Server 2005  [new]
pr0ger
Member

Откуда: Москва
Сообщений: 1933
alexeyvg
pr0ger, mike909

SET SINGLE_USER не поможет.
для DROP нужно коннектится не к удаляемой БД, и кто-то другой может захватить коннект.

По моему, нужно по другому:

USE master
go
ALTER DATABASE MyDatabase SET OFFLINE WITH ROLLBACK IMMEDIATE;
DROP DATABASE MyDatabase;

согласен, так лучше.
6 окт 09, 13:27    [7747732]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить