WorkaHolic/MSSQL

SQL 복구는?

2010. 4. 8. 22:21
반응형

운영중인 디비일경우 사용자가 남아있어서 복원이 안되는 경우가 있습니다.
혼자서 쓸때도 뭔가[?]에 의해 프로세스가 남아있어서 복원이 잘 안되고
좀 짜증날때가 있죠..
그럴때 유저 킬하는 쿼리입니다...

use master
go
declare @dbname sysname
set @dbname = 'century21korea' -- substitute your database name here

set nocount on
declare Users cursor for
 select spid
 from master..sysprocesses
 where db_name(dbid) = @dbname

declare @spid int, @str varchar(255)

open users

fetch next from users into @spid

while @@fetch_status <> -1
begin
   if @@fetch_status = 0
   begin
      set @str = 'kill ' + convert(varchar, @spid)
      exec (@str)
   end
   fetch next from users into @spid
end

deallocate users
--유저 킬하는 쿼리  디비 복원을 위해서는 디비가 사용중이 아니어야 한다.



RESTORE FILELISTONLY
   FROM disk='e:\backup1205\1'
이걸 먼저 하셔서 이름 확인하시고...


RESTORE DATABASE century21korea1
   FROM disk='e:\backup1205\1'
   WITH RECOVERY,
   MOVE 'z_Century21korea_dat' TO 'c:\DbData\century21korea.mdf',
             확인한 이름을 이부분에 넣어주고..
   MOVE 'z_Century21korea_log' TO 'c:\DbData\century21korea.ldf'
                                                      여기다가는 복원되서
만들어질 파일 지점 , 이름..
GO

참고가 되셨길.. 디비 복원의 경우 EM에서 잘안되는 경우가 있기 때문에..
데이타명이 틀리다니.. with move를 쓰라느니.. 사용자가 있다느니.. 하는
에러가..


use century21korea
RESTORE DATABASE century21korea
   FROM disk='e:\backup1205\1'
   WITH RECOVERY,
   MOVE 'z_Century21korea_dat' TO 'c:\Program Files\Microsoft SQL
Server\MSSQL$BIGTRUST\Data\century21korea_Data.mdf',
   MOVE 'z_Century21korea_log' TO 'c:\Program Files\Microsoft SQL
Server\MSSQL$BIGTRUST\Data\century21korea_Log.ldf'

[출처] SQL 복구는?|작성자 진카자마

반응형