2016-11-10 4 views
0

에 의해 활성 연결 보류를 죽일 :SQL 서버 : 내가 <code>Master</code> 데이터베이스 이외의 SQL 연결을 죽일 코드 아래에 시도 MASTER 데이터베이스

DECLARE @kill varchar(8000) = ''; 

SELECT @kill = @kill + 'kill ' + CONVERT(varchar(5), session_id) + ';' 
FROM sys.dm_exec_sessions 
WHERE database_id = db_id('MyDB') 

EXEC(@kill); 

이 코드는 나를 위해 잘 일했다. 하지만 더 많은 활성 연결을 보려면 아래 질의를 실행했을 때 내 마스터 데이터베이스에 21 개의 활성 연결이 있음을 발견했습니다.

SELECT 
    DB_NAME(dbid) as DBName, 
    COUNT(dbid) as NumberOfConnections, 
    loginame as LoginName 
FROM 
    sys.sysprocesses 
WHERE 
    dbid > 0 
GROUP BY 
    dbid, loginame 

내가 MASTER 데이터베이스의 모든 활성 연결을 종료하고 싶었 동안

는 다음에 실패하고 오류 메시지가 있었다 ". 자신의 프로세스를 종료 KILL을 사용할 수 없습니다"

알려주십시오. 'sa'계정이 보유하고있는 마스터 데이터베이스에서 21 개의 활성 연결을 모두 삭제할 수 있습니까?

친절한 지원에 대해 감사드립니다.

/폴

+0

다른 데이터베이스에서 코드를 실행 했습니까? 또한'master' 데이터베이스를 가리키는 열린 윈도우가 없는지 확인하십시오. –

+0

안녕 Eric, 고마워, 그래, 그때 오류 메시지는 "사용자 프로세스 만 죽일 수있다"고했다. 자, 저는이 연결이 어떻게 'sa'와 그것의 주변 23에 의해 만들어지고 언제나 활성화되어 있는지 조사하고 있습니다. – Paul

답변

0

당신은 단일 사용자 모드에서 데이터베이스를 넣어 데이터베이스에 대한 모든 활성 연결을 죽일 수있는, 내가 데이터베이스 사용중 기존에 걸쳐 복원하려고 할 때 나는 보통이 작업을 수행. 뭔가 ... ....

USE master; 
GO 

ALTER DATABASE [DB_Name] 
SET SINGLE_USER WITH ROLLBACK IMMEDIATE; 
GO 

USE [DB_Name] --<-- Grab that single available conncection 
GO 

USE master;  --<-- Now no more connections to your database Tadaaaaa... 
GO 
+0

안녕하세요 알리, 덕분에, 당신은 마스터 데이터베이스가 아닌 다른 모든 데이터베이스를 죽일 수 있습니다. 내 정확한 문제는 : 내 마스터 데이터베이스 'sa'로그인을 통해 23 활성 연결이 있습니다. 이 연결이 어떻게 활성화되어 있는지 알 수 없습니까? 또는 내가 그들을 죽이고 싶다면 어떻게해야합니까? 당신이 제안한 방법으로 당신은 마스터 데이터베이스 연결을 죽일 수 없습니다. – Paul