데이터베이스를 물리적인 위치를 변경시키는 다양한 방법
Database를 다른 위치로 이동/복사하고자 하는 경우에 다음의 세 가지 방법을 사용할 수 있다.
-Database Backup을 수행한 다음에 Restore 작업을 수행하면서 이동이 가능하다.
-Database를 detaching하고 Database File들을 원하는 위치로 이동한 다음에 다시 attaching함으로써 이동이 가능하다.
-BCP, DTS를 사용하여 이동이 가능하다.
어떤 방법을 사용할 것인지는, SQL Server 버전, SQL Server가 사용하는 Character Set/Sort Order, Database Size, 운영 여건 등의 여러 가지 요소들을 확인한 다음에 결정해야 한다.
위의 세 가지 방법 중에서 두 번째 방법을 사용하여 데이터베이스를 이동하는 방법에 대해서 자세히 알아보자. 동일한 SQL Server 내에서 Database의 파일 위치를 이동하는 경우에는 관계 없지만, 서로 다른 SQL Server간의 이동을 위해 두 번째 방법을 사용하고자 하는 경우에는, Source Database가 존재하는 SQL Server와 Destination Database가 존재할 SQL Server의 버전이 동일해야 하며 양쪽 SQL Server가 사용하는 Character Set과 Sort Order가 동일해야 한다.
데이터베이스를 분리하고 다시 연결하는 방법
SQL Server 7.0과 2000에서 Database의 위치를 이동하고자 하는 경우에, sp_detach_db와 sp_attach_db를 사용하여 작업하는 것이 가능하다.
이용하기전 온라인 도움말의 sp_detach_d, sp_attach_db 예제 구문을 보면 이해가 쉬울 것이다.
다음과 같이 작업하면 된다.
아래의 예문들은 Database 명이 "userdb" 라고 가정하고 작성된 내용이므로, "userdb" 라고 기술한 위치에 실제 작업할 Database명을 기술하면 된다. 작업에 앞서 기존내용들을 백업한 후 테스트 해보기 바란다.
-작업할 Database file의 위치를 확인한다.
Use userdb
Go
Sp_helpfile
Go
-해당 Database를 SQL Server에서 분리한다. 이 작업을 수행하기 위해서는, 해당 Database를 사용하는 Process가 없어야 한다. 현재 해당 Database를 사용하는 사용자가 있다면, 현재 수행중인 작업들이 종료되기를 기다렸다가 작업하시기 바란다. 그리고, Query Analyzer 등에서, 작업할 Database에 연결한 사용자들이 있다면 모두 그 Database에서 빠져 나가도록 한 다음에 작업을 수행해야 한다. 기다리는 것이 지루하다면 서비스를 잠시 멈췄다가 사용할 수 있다.
sp_detach_db userdb
go
-위의 Scripts를 수행한 다음에 Results창에 다음과 같이 메시지가 나타나는지 확인한다.
Successfully detached Database 'userdb'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
-만약, 작업할 Database를 사용하고 있는 사용자가 있으면, 다음과 같이 에러 메시지가 발생하면서 작업이 중단된다.
Server: Msg 3702, Level 16, State 1, Line 0
Cannot drop the Database 'userdb' because it is currently in use.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
-해당 Database가 제대로 분리(detaching)되었는지 확인한다.
sp_helpdb userdb
go
-제대로 분리되었다면, 다음과 같은 형태의 메시지가 리턴 될 것이다.
Server: Msg 15010, Level 16, State 1, Procedure sp_helpdb, Line 51
The Database 'userdb' does not exist. Use sp_helpdb to show available Databases.
-이동하고자 하는 위치로 Database file들을 이동/복사한다.
-이동한 Database file을 원하는 SQL Server에서 다시 부착(attaching)해 준다.
sp_attach_db N'userdb', N'E:\mssql7\Dbdevice\userdbdata.mdf', N'E:\mssql7\Dbdevice\userdblog.ldf'
go
-위의 Scripts를 수행하면, 다음과 같은 메시지가 리턴된다.
Successfully attached Database 'userdb'.
-해당 Database가 SQL Server에 제대로 부착되었는지 확인한다.
sp_helpdb userdb
go
Database를 다른 위치로 이동/복사하고자 하는 경우에 다음의 세 가지 방법을 사용할 수 있다.
-Database Backup을 수행한 다음에 Restore 작업을 수행하면서 이동이 가능하다.
-Database를 detaching하고 Database File들을 원하는 위치로 이동한 다음에 다시 attaching함으로써 이동이 가능하다.
-BCP, DTS를 사용하여 이동이 가능하다.
어떤 방법을 사용할 것인지는, SQL Server 버전, SQL Server가 사용하는 Character Set/Sort Order, Database Size, 운영 여건 등의 여러 가지 요소들을 확인한 다음에 결정해야 한다.
위의 세 가지 방법 중에서 두 번째 방법을 사용하여 데이터베이스를 이동하는 방법에 대해서 자세히 알아보자. 동일한 SQL Server 내에서 Database의 파일 위치를 이동하는 경우에는 관계 없지만, 서로 다른 SQL Server간의 이동을 위해 두 번째 방법을 사용하고자 하는 경우에는, Source Database가 존재하는 SQL Server와 Destination Database가 존재할 SQL Server의 버전이 동일해야 하며 양쪽 SQL Server가 사용하는 Character Set과 Sort Order가 동일해야 한다.
데이터베이스를 분리하고 다시 연결하는 방법
SQL Server 7.0과 2000에서 Database의 위치를 이동하고자 하는 경우에, sp_detach_db와 sp_attach_db를 사용하여 작업하는 것이 가능하다.
이용하기전 온라인 도움말의 sp_detach_d, sp_attach_db 예제 구문을 보면 이해가 쉬울 것이다.
다음과 같이 작업하면 된다.
아래의 예문들은 Database 명이 "userdb" 라고 가정하고 작성된 내용이므로, "userdb" 라고 기술한 위치에 실제 작업할 Database명을 기술하면 된다. 작업에 앞서 기존내용들을 백업한 후 테스트 해보기 바란다.
-작업할 Database file의 위치를 확인한다.
Use userdb
Go
Sp_helpfile
Go
-해당 Database를 SQL Server에서 분리한다. 이 작업을 수행하기 위해서는, 해당 Database를 사용하는 Process가 없어야 한다. 현재 해당 Database를 사용하는 사용자가 있다면, 현재 수행중인 작업들이 종료되기를 기다렸다가 작업하시기 바란다. 그리고, Query Analyzer 등에서, 작업할 Database에 연결한 사용자들이 있다면 모두 그 Database에서 빠져 나가도록 한 다음에 작업을 수행해야 한다. 기다리는 것이 지루하다면 서비스를 잠시 멈췄다가 사용할 수 있다.
sp_detach_db userdb
go
-위의 Scripts를 수행한 다음에 Results창에 다음과 같이 메시지가 나타나는지 확인한다.
Successfully detached Database 'userdb'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
-만약, 작업할 Database를 사용하고 있는 사용자가 있으면, 다음과 같이 에러 메시지가 발생하면서 작업이 중단된다.
Server: Msg 3702, Level 16, State 1, Line 0
Cannot drop the Database 'userdb' because it is currently in use.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
-해당 Database가 제대로 분리(detaching)되었는지 확인한다.
sp_helpdb userdb
go
-제대로 분리되었다면, 다음과 같은 형태의 메시지가 리턴 될 것이다.
Server: Msg 15010, Level 16, State 1, Procedure sp_helpdb, Line 51
The Database 'userdb' does not exist. Use sp_helpdb to show available Databases.
-이동하고자 하는 위치로 Database file들을 이동/복사한다.
-이동한 Database file을 원하는 SQL Server에서 다시 부착(attaching)해 준다.
sp_attach_db N'userdb', N'E:\mssql7\Dbdevice\userdbdata.mdf', N'E:\mssql7\Dbdevice\userdblog.ldf'
go
-위의 Scripts를 수행하면, 다음과 같은 메시지가 리턴된다.
Successfully attached Database 'userdb'.
-해당 Database가 SQL Server에 제대로 부착되었는지 확인한다.
sp_helpdb userdb
go