it-swarm-ko.tech

백업을 복원 할 때 모든 활성 연결을 해제하려면 어떻게합니까?

활성 연결로 인해 SQL Server 2005가 백업을 복원하지 않습니다. 어떻게 강제 할 수 있습니까?

165
Jader Dias

SQL Server Management Studio 2005

데이터베이스를 마우스 오른쪽 버튼으로 클릭하고 Tasks을 클릭 한 다음 Detach Database를 클릭하면 활성 연결이있는 대화 상자가 나타납니다.

Detach Screen

"메시지"아래의 하이퍼 링크를 클릭하면 활성 연결을 종료 할 수 있습니다.

그런 다음 데이터베이스를 분리하지 않고 해당 연결을 종료 할 수 있습니다.

자세한 정보 여기 .

SQL Server Management Studio 2008

SQL Server Management Studio 2008의 인터페이스가 변경되었습니다. 단계는 다음과 같습니다. Tim Leung )

  1. 개체 탐색기에서 서버를 마우스 오른쪽 단추로 클릭하고 '활동 모니터'를 선택하십시오.
  2. 이것이 열리면 프로세스 그룹을 펼치십시오.
  3. 이제 드롭 다운을 사용하여 데이터베이스 이름별로 결과를 필터링하십시오.
  4. 마우스 오른쪽 단추로 'Kill Process'옵션을 선택하여 서버 연결을 종료하십시오.
173
George Stocker

Db를 단일 사용자 모드로 설정하고 복원 한 다음 다시 다중 사용자로 설정하려고합니다.

ALTER DATABASE YourDB
SET SINGLE_USER WITH
ROLLBACK AFTER 60 --this will give your current connections 60 seconds to complete

--Do Actual Restore
RESTORE DATABASE YourDB
FROM DISK = 'D:\BackUp\YourBaackUpFile.bak'
WITH MOVE 'YourMDFLogicalName' TO 'D:\Data\YourMDFFile.mdf',
MOVE 'YourLDFLogicalName' TO 'D:\Data\YourLDFFile.ldf'

/*If there is no error in statement before database will be in multiuser
mode.  If error occurs please execute following command it will convert
database in multi user.*/
ALTER DATABASE YourDB SET MULTI_USER
GO

참조 : Pinal Dave ( http://blog.SQLAuthority.com )

공식 참조 : https://msdn.Microsoft.com/en-us/library/ms345598.aspx

189
brendan

이 코드는 저에게 효과적이며 데이터베이스의 기존 연결을 모두 종료합니다. 데이터베이스 이름을 갖도록 Set @dbname = 'databaseName'줄을 변경하기 만하면됩니다.

Use Master
Go

Declare @dbname sysname

Set @dbname = 'databaseName'

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

이 후 나는 그것을 복원 할 수 있었다

42
RagnaRock

SQL Server를 다시 시작하면 사용자 연결이 끊어집니다. 내가 찾은 가장 쉬운 방법-서버를 오프라인으로 전환하려는 경우에도 좋습니다.

그러나 매우 까다로운 이유로 'Take Offline (오프라인으로 가져 오기)'옵션이이 작업을 안정적으로 수행하지 않으며 관리 콘솔을 중단 시키거나 혼동시킬 수 있습니다. 다시 시작한 후 오프라인 작업 수행

예를 들어 연결의 소스 인 웹 서버를 중지 한 경우 옵션입니다.

5
Simon_Weaver

이 시도 ...

DECLARE UserCursor CURSOR LOCAL FAST_FORWARD FOR
SELECT
    spid
FROM
    master.dbo.sysprocesses
WHERE DB_NAME(dbid) = 'dbname'--replace the dbname with your database
DECLARE @spid SMALLINT
DECLARE @SQLCommand VARCHAR(300)
OPEN UserCursor
FETCH NEXT FROM UserCursor INTO
    @spid
WHILE @@FETCH_STATUS = 0
BEGIN
    SET @SQLCommand = 'KILL ' + CAST(@spid AS VARCHAR)
    EXECUTE(@SQLCommand)
    FETCH NEXT FROM UserCursor INTO
        @spid
END
CLOSE UserCursor
DEALLOCATE UserCursor
GO
4
user2276214

SQL Server 2008에서 복원 프로세스를 자동화하는 동안이 문제를 겪었습니다. 내 (성공적인) 접근 방식은 두 가지 답변을 혼합 한 것입니다.

먼저, 나는 상기 데이터베이스의 모든 연결을 가로 질러서 죽인다.

DECLARE @SPID int = (SELECT TOP 1 SPID FROM sys.sysprocess WHERE dbid = db_id('dbName'))
While @spid Is Not Null
Begin
        Execute ('Kill ' + @spid)
        Select @spid = top 1 spid from master.dbo.sysprocesses
        where dbid = db_id('dbName')
End

그런 다음 데이터베이스를 single_user 모드로 설정했습니다.

ALTER DATABASE dbName SET SINGLE_USER

그런 다음 복원을 실행합니다 ...

RESTORE DATABASE and whatnot

연결을 다시 종료하십시오

(same query as above)

그리고 데이터베이스를 다시 multi_user로 설정하십시오.

ALTER DATABASE dbName SET MULTI_USER

이렇게하면 단일 모드로 설정하기 전에 데이터베이스를 유지하는 연결이 없는지 확인합니다.

3
Eric Wu

이미 제공된 조언에 추가하려면 DB를 사용하는 IIS를 통해 웹 앱을 실행하는 경우 앱의 앱 풀을 중지 (재활용하지 않음)해야 할 수도 있습니다. 복원하는 동안 다시 시작하십시오. 앱 풀을 중지하면 활성 http 연결이 끊어지고 더 이상 허용되지 않습니다. 그렇지 않으면 연결되어 데이터베이스를 잠그는 프로세스가 트리거 될 수 있습니다. 데이터베이스를 복원 할 때 Umbraco 컨텐츠 관리 시스템과 같은 알려진 문제입니다.

2
Chris Halcrow

이 중 어느 것도 나를 위해 일하지 않았으며 현재 사용자를 삭제하거나 연결을 끊을 수 없습니다. 또한 DB에 대한 활성 연결을 볼 수 없습니다. SQL Server를 다시 시작하면 (마우스 오른쪽 버튼을 클릭하고 다시 시작을 선택하면) 가능합니다.

2
The Coder

위의 어느 것도 나를 위해 일하지 않았습니다. 내 데이터베이스에 Activity Monitor 또는 sp_who를 사용한 활성 연결이 표시되지 않았습니다. 나는 궁극적으로 :

  • 데이터베이스 노드를 마우스 오른쪽 단추로 클릭하십시오
  • "분리 ..."를 선택하십시오.
  • "연결 끊기"상자를 확인하십시오.
  • 다시 부착

가장 우아한 솔루션은 아니지만 작동하며 SQL Server를 다시 시작할 필요가 없습니다 (DB 서버가 다른 데이터베이스를 많이 호스팅했기 때문에 옵션이 아닙니다)

1
Brent Waggoner

나는 이것을 좋아한다.

롤백 즉시 데이터베이스 세트를 오프라인으로 변경

데이터베이스를 복원하십시오. 그 후

롤백 즉시 데이터베이스 세트를 온라인으로 변경

0
Aniyan Kolathur