Как Вы уничтожаете все текущие соединения с базой данных SQL Server 2005?

вместо понижения вы можете добавить условия для привязки частей вашего кода к поддерживаемым версиям.

    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M){
       //put whole code here if nothing supported for 23+
    }
284
задан Tom H 13 July 2010 в 03:28
поделиться

8 ответов

См. , Уничтожают Все Активные соединения К Базе данных .

причина, что подход, что Adam предложил , не будет работать, состоит в том, что в течение времени, когда Вы - цикличное выполнение по активным соединениям, новый может быть установлен, и Вы будете скучать по тем. Статья я связал с использованием следующий подход, который не имеет этого недостатка:

-- set your current connection to use master otherwise you might get an error

use master
ALTER DATABASE YourDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE 

--do you stuff here 

ALTER DATABASE YourDatabase SET MULTI_USER
377
ответ дан JordanGW 23 November 2019 в 01:52
поделиться

Попробуйте это:

ALTER DATABASE [DATABASE_NAME]
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE
2
ответ дан Joseph Sturtevant 23 November 2019 в 01:52
поделиться

Я обычно сталкиваюсь с той ошибкой, когда я пытаюсь восстановить базу данных, я обычно просто перехожу к верхушке дерева в Studio управления и щелкаю правой кнопкой и перезапускаю сервер базы данных (потому что это находится на машине разработки, это не могло бы быть идеально в производстве). Это близко все соединения с базой данных.

5
ответ дан RedWolves 23 November 2019 в 01:52
поделиться

Я всегда использовал:


ALTER DATABASE DB_NAME SET SINGLE_USER WITH ROLLBACK IMMEDIATE 
GO 
SP_RENAMEDB 'DB_NAME','DB_NAME_NEW'
Go 
ALTER DATABASE DB_NAME_NEW  SET MULTI_USER -- set back to multi user 
GO 
24
ответ дан brendan 23 November 2019 в 01:52
поделиться

Using SQL Management Studio Express:

В Обозревателе объектов древовидная развертка под управлением к "Монитору Действия" (если Вы не можете найти его там тогда, щелкают правой кнопкой по серверу базы данных и избранному "Монитору Действия"). Открытие Activity Monitor, можно просмотреть всю информацию о процессе. Необходимо быть в состоянии найти блокировки для базы данных, которой Вы интересуетесь и уничтожаете те блокировки, которые также уничтожат соединение.

необходимо быть в состоянии переименовать после этого.

27
ответ дан row1 23 November 2019 в 01:52
поделиться

Сценарий для выполнения этого замените 'DB_NAME' базой данных для уничтожения всех соединений с:

USE master
GO

SET NOCOUNT ON
DECLARE @DBName varchar(50)
DECLARE @spidstr varchar(8000)
DECLARE @ConnKilled smallint
SET @ConnKilled=0
SET @spidstr = ''

Set @DBName = 'DB_NAME'
IF db_id(@DBName) < 4
BEGIN
PRINT 'Connections to system databases cannot be killed'
RETURN
END
SELECT @spidstr=coalesce(@spidstr,',' )+'kill '+convert(varchar, spid)+ '; '
FROM master..sysprocesses WHERE dbid=db_id(@DBName)

IF LEN(@spidstr) > 0
BEGIN
EXEC(@spidstr)
SELECT @ConnKilled = COUNT(1)
FROM master..sysprocesses WHERE dbid=db_id(@DBName)
END
110
ответ дан Adam 23 November 2019 в 01:52
поделиться

В Studio управления SQL Server MS на обозревателе объектов щелкните правой кнопкой по базе данных. В контекстном меню, которое следует за избранными 'Задачами->, Выводят из эксплуатации'

4
ответ дан John Christensen 23 November 2019 в 01:52
поделиться

Убить его и убить огнем:

USE master
go

DECLARE @dbname sysname
SET @dbname = 'yourdbname'

DECLARE @spid int
SELECT @spid = min(spid) from master.dbo.sysprocesses where dbid = db_id(@dbname)
WHILE @spid IS NOT NULL
BEGIN
EXECUTE ('KILL ' + @spid)
SELECT @spid = min(spid) from master.dbo.sysprocesses where dbid = db_id(@dbname) AND spid > @spid
END
53
ответ дан 23 November 2019 в 01:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: