SQL2008 사용하고 있는데요.
서버 이전시 연결된 서버 정보를 이관할 수 있는 방법이 없나요?
스크립트로 한꺼번에 만들었더니 비밀번호 쪽이 #### 라고 되어 있어서요.
혹시 다른방법은 없나하구요. ㅠㅠ
Comment 7
-
항해자™
2016.05.04 23:06
msdb 백업 복원하면 가능 할꺼에요,, -
더따뜻한
2016.05.09 12:16
한다구 했는데... ㅠ.ㅇ
BACKUP DATABASE MASTER TO DISK = 'F:\MASTER_2016_05_01.BAK';
BACKUP DATABASE MSDB TO DISK = 'F:\MSDB_2016_05_01.BAK';
BACKUP SERVICE MASTER KEY TO FILE = 'F:\service_master_key.key' ENCRYPTION BY PASSWORD = '123456';
요런식으로요... 백업하고 .... 나름 복원도 한다구 한건데... ㅠㅠ 안되더라구요.ㅠ
제가 완전 처음이라...
-
추억만이
2016.05.07 21:47
링크드서버는 master db 복구를 해야 하는데,
복구만 해서 되지 않고
마스터키까지 복원되어야 합니다.
-
더따뜻한
2016.05.09 12:22
master, msdb, 마스터키 백업복원 했는데요. 잘 안되더라구요.
중요한건 '나름' 인터넷보고 한거라는 거구...ㅠ
작업 이런건 다 복구가 되었는데요. ( 복제 제외 )
트리거라든지, 연결된 서버 등은 안되더라구요. 로그인 정보도 안되어서 인터넷 보고 스크립트 만들어서 이전했네요. ㅠㅠ
-
minsouk
2016.05.09 14:15
음 master 복구 하실때 sysservers 에 0번이 자기 hostname 으로 등록이 되어야 하는데요
이 부분을 안하면 에러가 발생할 듯 합니다.
declare @old_srvname nvarchar(1000)
select @old_srvname = srvname from master.dbo.sysservers where srvid = 0
exec sp_dropserver @old_srvname
go
exec sp_addserver [newHostname], local
go
. 두 서버의 Version 이 Detail Version 까지 같은지 확인한다.
(마스터 이전의 경우 반드시 같아야 한다.)
SELECT @@VERSION
Microsoft SQL Server 2008 (SP1) - 10.0.2734.0
. Backup 수행
Backup 과 Restore 를 이용하는 방법과 Detach Attach 등의 방법이 있지만
Backup 을 이용하고, User Data Base 의 Transaction Log 를 적용하는 방법을 사용하면
서비스 종료 시간을 최소화 할 수 있습니다.
But 작으면 그냥 attach!
backup script
----------------------------------------------------------------------
select 'Backup database '+name+' to disk =''c:\backup\fbackup\'
+ 'FITI-SQL1.'+name+' '+convert(char(10),getdate(),120)+'.BAK'
from master.dbo.sysdatabases
where name not in ('tempdb','model')
log backup script
----------------------------------------------------------------------
.....
. File Copy (목적지 서버로 데이터 카피)
. Restore
Restore Script 생성 (원본 서버에서 생성 한다.)
-------------------
select 'restore database '+ name +' from disk =''d:\sql\backup\SRCDB.'+name+' '+convert(char(10),getdate(),120)+'.BAK'''
+' with move '''+ (select rtrim(name) from sysaltfiles b where a.dbid = b.dbid and b.fileid = 1 )+''''
+' to ''d:\sql\DATA\'+name+'_Data.mdf'''
+', move '''+ (select rtrim(name) from sysaltfiles b where a.dbid = b.dbid and b.fileid = 2 )+''''
+' to ''d:\sql\DATA\'+name+'_Log.ldf'', file=1, replace, stats=10'
from sysdatabases a
where name not in ('master','msdb','tempdb','model','pubs','northwind')
order by dbid
. 대상 서버를 종료한다.
net stop mssqlserver
. 대상 서버의 master msdb tempdb model resourcedb 를 복사해서 다른 곳에 보관한다.
net stop mssqlserver
net start mssqlserver /m /f /T3608
sqlcmd -S. -E
-- master 강제복구
RESTORE DATABASE MASTER
FROM
DISK ='D:\backup\joycts\master.BAK'
WITH FILE =1
, NOUNLOAD
, REPLACE
, STATS = 10
go
net start mssqlserver /m /f /T3608
sqlcmd -S. -E
-- 파일들 일단 경로 맞추어서 예전것으로 올린다.
alter database tempdb modify file (name = tempdev , filename = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\tempdb.mdf')
alter database tempdb modify file (name = templog , filename = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\templog.ldf')
alter database model modify file (name = modeldev , filename = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\model.mdf')
alter database model modify file (name = modellog , filename = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\modellog.ldf')
alter database msdb modify file (name = MSDBData , filename = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\MSDBData.mdf')
alter database msdb modify file (name = MSDBLog , filename = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\MSDBLog.ldf')
go
exit
net stop mssqlserver
net start mssqlserver
. 원본 서버의 Restore Script 생성된 스크립트로 복구 한다.
. 마스터 키를 복구 하거나 밀어버린다.
alter service master key force regenerate;
밀어버리면 linked server 안되니 꼭 백업 복구를 하세요~
. Job Agent 속성 변경
syspolicy_purge_history
@command=N'(Get-Item SQLSERVER:\SQLPolicy\XXXXXhostnameXXXXXX\DEFAULT).EraseSystemHealthPhantomRecords()',
.
. Sysservers 의 0번을 자기것으로 변경.
exec sp_dropserver 'SRCDB'
go
exec sp_addserver 'DSTDB', local
go
. job 소유자 변경 (필요하면)
update sysjobs set owner_sid = 0x01
net stop mssqlserver
net start mssqlserver
net start sqlserveragent
http://sqlsql.tistory.com/109
-
더따뜻한
2016.05.11 16:50
도전!!~!! 다시 해보겠습니다. 감사해요~
-
minsouk
2016.05.11 23:51
화이팅!