SQL Server를 실행하는 컴퓨터 간에 데이터베이스를 이동하는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 314546 - 이 문서가 적용되는 제품 보기.
이 문서는 이전에 다음 ID로 출판되었음: KR314546
모두 확대 | 모두 축소

이 페이지에서

요약

이 문서에서는 SQL Server가 실행 중인 컴퓨터 사이에서 Microsoft SQL Server 사용자 데이터베이스와 대부분의 공통 SQL Server 구성 요소를 이동하는 방법을 단계별로 설명합니다.

이 문서에서 설명하는 단계에서는 사용자가 master, model, tempdb 또는 msdb 시스템 데이터베이스를 이동하지 않는다고 가정합니다. 이 단계에서는 master 데이터베이스와 msdb 데이터베이스에 포함되어 있는 로그인과 대부분의 공통 구성 요소를 전송하기 위한 다른 옵션도 제공합니다.

이 문서의 단계를 수행해도 전송되지 않는 특정 항목에 대한 자세한 내용은 이 문서의 "추가 정보" 절을 참조하십시오.

참고 SQL Server 2000에서 Microsoft SQL Server 2000(64비트)으로의 데이터 마이그레이션이 지원됩니다. sp_attach_db 시스템 저장 프로시저나 sp_attach_single_file_db 시스템 저장 프로시저를 사용하거나 32비트 엔터프라이즈 관리자의 백업 및 복원을 사용하여 64비트 데이터베이스에 32비트 데이터베이스를 연결할 수 있고 32비트 버전의 SQL Server와 64비트 버전의 SQL Server 간에서 데이터베이스를 이동할 수 있습니다. 같은 방법을 사용하여 SQL Server 7.0에서 데이터를 마이그레이션할 수도 있습니다. 그러나 SQL Server 2000(64비트)에서 SQL Server 7.0으로 데이터를 다운그레이드할 수는 없습니다. 각 방법에 대한 설명은 다음과 같습니다.

SQL Server 2005를 사용하는 경우

SQL Server 7.0 또는 SQL Server 2000에서 데이터를 마이그레이션할 때 사용하는 방법을 사용할 수 있습니다. 하지만 Microsoft SQL Server 2005의 관리 도구는 SQL Server 7.0 또는 SQL Server 2000의 관리 도구와 다르므로, SQL Server 엔터프라이즈 관리자 대신 SQL Server Management Studio를 사용하고 데이터 변환 서비스 가져오기 및 내보내기 데이터 마법사 대신 SQL Server 가져오기 및 내보내기 마법사(DTSWizard.exe)를 사용해야 합니다.

백업 및 복원

원본 서버에 있는 사용자 데이터베이스를 백업한 다음 대상 서버에 해당 사용자 데이터베이스를 복원합니다.
  • 백업이 진행 중인 동안 데이터베이스를 사용할 수 있습니다. 백업이 완료된 후 데이터베이스에서 INSERT, UPDATE 또는 DELETE 문을 수행할 경우 백업에 이러한 변경 내용이 포함되지 않습니다. 모든 변경 내용을 전송해야 할 때 트랜잭션 로그 백업과 전체 데이터베이스 백업을 모두 수행하면 최소 시스템 중단 시간으로 변경 내용을 전송할 수 있습니다.
    1. 대상 서버에 전체 데이터베이스 백업을 복원하고 WITH NORECOVERY 옵션을 지정합니다.

      참고 추가 데이터베이스 수정을 방지하려면 사용자에게 원본 서버에서 데이터베이스 작업을 종료하도록 지시하십시오.
    2. 트랜잭션 로그 백업을 수행하고 WITH RECOVERY 옵션을 사용하여 트랜잭션 로그 백업을 대상 서버에 복원합니다. 시스템 중단 시간이 트랜잭션 로그 백업 및 복원 시간으로 제한됩니다. 자세한 내용은 SQL Server 온라인 설명서의 "Transact-SQL 참조" 항목에 나와 있는 하위 항목 "RESTORE"를 참조하십시오.
  • 대상 서버의 데이터베이스 크기가 원본 서버에 있는 데이터베이스 크기와 같습니다. 데이터베이스의 크기를 줄이려면 백업을 수행하기 전에 원본 데이터베이스를 줄이거나 복원을 완료한 후 대상 데이터베이스를 줄여야 합니다. 자세한 내용은 SQL Server 온라인 설명서의 "데이터베이스 만들기 및 유지 관리"에 나와 있는 "데이터베이스를 축소" 항목을 참조하십시오.
  • 데이터베이스를 원본 데이터베이스와 다른 파일 위치에 복원하는 경우 WITH MOVE 옵션을 지정해야 합니다. 원본 서버에서 데이터베이스가 D:\Mssql\Data 폴더에 있지만 대상 서버에는 D 드라이브가 없어서 C:\Mssql\Data 폴더에 데이터베이스를 복원하려고 하는 경우를 예로 들 수 있습니다. 다른 위치에 데이터베이스를 복원하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
    221465 INF: RESTORE 문에서 WITH MOVE 옵션 사용
    304692 INF: BACKUP 및 RESTORE를 사용하여 SQL Server 7.0 데이터베이스를 새 서버로 이동
  • 대상 서버에 이미 존재하는 데이터베이스를 덮어쓰려면 WITH REPLACE 옵션을 지정해야 합니다. 자세한 내용은 SQL Server 온라인 설명서의 "Transact-SQL 참조" 항목에 나와 있는 하위 항목 "RESTORE"를 참조하십시오.
  • 복원할 대상 SQL Server의 버전에 따라 문자 집합, 정렬 순서 및 유니코드 데이터 정렬이 원본 서버와 대상 서버 모두에서 동일해야 합니다. 자세한 내용은 이 문서의 "데이터 정렬에 대한 참고" 절을 참조하십시오.

Sp_detach_db 및 Sp_attach_db 저장 프로시저

sp_detach_dbsp_attach_db 저장 프로시저를 사용하려면 다음과 같이 하십시오.
  1. sp_detach_db 저장 프로시저를 사용하여 원본 서버에서 데이터베이스를 분리합니다. 해당 데이터베이스와 연관된 .mdf, .ndf 및 .ldf 파일을 대상 서버로 복사해야 합니다. 파일 형식의 설명을 보려면 아래 표를 참조하십시오.
    표 축소표 확대
    파일 확장명설명
    .mdf 주 데이터 파일
    .ndf 보조 데이터 파일
    .ldf 트랜잭션 로그 파일
  2. sp_attach_db 저장 프로시저를 사용하여 대상 서버의 데이터베이스에 연결하고 이전 단계에서 대상 서버로 복사한 파일을 가리킵니다. 이 방법을 사용하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
    224071 INF: 분리/연결(Detach/Attach)을 사용하여 새 위치로 SQL Server 데이터베이스 이동
  • 분리한 다음에는 데이터베이스에 액세스할 수 없으며 파일을 복사할 때 데이터베이스를 사용할 수 없습니다. 분리할 때 데이터베이스에 들어 있던 데이터가 모두 이동됩니다.
  • Attach 메서드나 Detach 메서드를 사용하는 경우 양쪽 서버 모두에서 문자 집합, 정렬 순서 및 유니코드 데이터 정렬이 동일해야 할 수 있습니다. 자세한 내용은 이 문서의 "데이터 정렬에 대한 참고" 절을 참조하십시오.

데이터 정렬에 대한 참고

백업 및 복원 또는 AttachDetach 메서드를 사용하여 SQL Server 7.0 서버 간에 데이터베이스를 이동할 때는 양쪽 서버에서 문자 집합, 정렬 순서 및 유니코드 데이터 정렬이 동일해야 합니다. SQL Server 7.0에서 SQL Server 2000으로 또는 SQL Server 2000 서버 간에 데이터베이스를 이동할 때는 데이터베이스가 원본 데이터베이스의 데이터 정렬을 유지합니다. 따라서 SQL Server 2000을 실행 중인 대상 서버가 원본 데이터베이스와 다른 데이터 정렬을 갖고 있으면 대상 데이터베이스가 대상 서버의 master, model, tempdbmsdb 데이터베이스와 다른 데이터 정렬을 갖습니다. 자세한 내용은 SQL Server 2000 온라인 설명서의 "혼합 데이터 정렬 환경" 항목을 참조하십시오.

데이터 가져오기 및 내보내기(SQL Server 데이터베이스 간 개체 및 데이터 복사)

데이터 변환 서비스 가져오기 및 내보내기 데이터 마법사를 사용하여 원본 데이터베이스에서 대상 데이터베이스로 전체 데이터베이스를 복사하거나 개체와 데이터를 선택적으로 복사할 수 있습니다.
  • 전송하는 동안 원본 데이터베이스를 사용할 수 있습니다. 전송하는 동안 원본 데이터베이스를 사용하는 경우 전송이 진행 중일 때 일부 차단이 발생할 수 있습니다.
  • 데이터 가져오기 및 내보내기 마법사를 사용할 경우에는 문자 집합, 정렬 순서 및 데이터 정렬이 원본 서버와 대상 서버 간에 동일해야 할 필요가 없습니다.
  • 원본 데이터베이스의 사용되지 않는 공간은 이동되지 않으므로 대상 데이터베이스가 원본 데이터베이스만큼 클 필요가 없습니다. 마찬가지로 일부 개체만 이동할 때도 대상 데이터베이스가 원본 데이터베이스만큼 클 필요가 없습니다.
  • SQL Server 7.0 데이터 변환 서비스는 64KB보다 큰 텍스트 및 이미지 데이터를 올바르게 전송하지 못할 수 있습니다. SQL Server 2000 버전의 데이터 변환 서비스에는 이러한 문제가 적용되지 않습니다. 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
    257425 FIX: DTS 개체 전송에서 64KB보다 큰 BLOB 데이터를 전송하지 않는다

2단계: 로그인 및 암호를 전송하는 방법

원본 서버에서 대상 서버로 로그인을 전송하지 않으면 현재 SQL Server 사용자가 대상 서버로 로그온하지 못할 수 있습니다. 다음 Microsoft 기술 자료 문서에 나와 있는 지침을 사용하면 로그인과 암호를 전송할 수 있습니다.
246133 HOWTO: SQL Server 인스턴스 간에 로그인 및 암호 전송
대상 서버의 로그인용 기본 데이터베이스가 원본 서버의 로그인용 기본 데이터베이스와 다를 수 있습니다. sp_defaultdb 저장 프로시저를 사용하면 로그인용 기본 데이터베이스를 변경할 수 있습니다. 자세한 내용은 SQL Server 온라인 설명서에서 "Transact-SQL 참조" 항목에 나와 있는 하위 항목 "sp_defaultdb"를 참조하십시오.

3단계: 분리된 사용자 문제를 해결하는 방법

대상 서버로 로그인과 암호를 전송한 후에는 사용자가 데이터베이스에 액세스하지 못할 수 있습니다. 로그인은 보안 식별자(SID)를 통해 사용자와 연결되는데, 데이터베이스 이동 후 SID가 일치하지 않으면 SQL Server가 데이터베이스에 대한 사용자 액세스를 거부할 수 있습니다. 이 문제를 분리된 사용자라고 합니다. SQL Server 2000 DTS 로그인 전송 기능을 사용하여 로그인과 암호를 전송하면 대개 분리된 사용자를 갖게 됩니다. 또한 원본 서버와 다른 도메인에 있는 대상 서버에서 액세스 권한이 부여된 통합 로그인으로 인해 분리된 사용자를 갖게 됩니다.
  1. 분리된 사용자를 찾습니다. 대상 서버에서 쿼리 분석기를 연 후 이동한 사용자 데이터베이스에서 다음 코드를 실행합니다.
    exec sp_change_users_login 'Report'
    이 프로시저는 로그온에 연결되지 않은 분리된 사용자를 모두 나열합니다. 사용자가 나열되지 않으면 2단계와 3단계를 건너뛰고 4단계로 이동합니다.
  2. 분리된 사용자를 확인합니다. 사용자가 분리된 경우 데이터베이스 사용자는 서버에 성공적으로 로그온할 수 있지만 데이터베이스에 액세스할 수 있는 사용 권한이 없습니다. 데이터베이스에 대한 로그온 액세스 권한을 부여하려고 하면 사용자가 이미 존재하기 때문에 다음과 유사한 내용의 오류 메시지가 나타납니다.
    Microsoft SQL-DMO (ODBC SQLState: 42000) 오류 15023: 현재 데이터베이스에 '%s' 사용자 또는 역할이 이미 있습니다.
    분리된 사용자를 해결하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
    240872 HOWTO: 데이터베이스를 SQL 서버 사이에서 이동할 때 사용 권한 문제를 해결하는 방법

    이 문서에서는 로그인을 데이터베이스 사용자에 매핑하는 방법에 대한 지침을 제공하고 표준 SQL Server 로그인 및 통합 로그인에서 분리된 사용자를 확인합니다.

    274188 온라인 설명서의 "분리된 사용자 문제 해결" 항목이 불완전하다

    이 문서에서는 sp_change_users_login 저장 프로시저를 사용하여 분리된 사용자를 하나씩 수정하는 방법을 보여줍니다. sp_change_users_login 저장 프로시저만 표준 SQL Server 로그인에서 분리된 사용자를 확인합니다.
  3. 데이터베이스 소유자(dbo)가 분리된 것으로 나타나면 사용자 데이터베이스에서 다음 코드를 실행합니다.
    exec sp_changedbowner 'sa'
    저장 프로시저가 데이터베이스 소유자를 dbo로 변경하고 문제를 수정합니다. 데이터베이스 소유자를 다른 사용자로 변경하려면 원하는 사용자로 sp_changedbowner를 다시 실행합니다. 자세한 내용은 SQL Server 온라인 설명서의 "Transact-SQL 참조" 항목에 나와 있는 하위 항목 "sp_changedbowner"를 참조하십시오.
  4. 대상 서버가 SQL Server 2000 서비스 팩 1을 실행할 때는 연결이나 복원 또는 두 가지 모두를 수행한 후에도 데이터베이스 소유자가 엔터프라이즈 관리자의 사용자 폴더 목록에 없을 수 있습니다. 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
    305711 BUG: DBO 사용자가 엔터프라이즈 관리자에 표시되지 않는다
  5. 원본 서버에서 dbo로 매핑된 로그온이 대상 서버에 없는 경우에 엔터프라이즈 관리자를 통해 시스템 관리자(sa) 암호를 변경하려고 하면 다음과 유사한 오류 메시지가 나타날 수 있습니다.
    오류 21776: [SQL-DMO] 'dbo' 이름을 사용자 컬렉션에서 찾을 수 없습니다. 정식 이름인 경우 []를 사용하여 이름의 각 부분을 분리한 뒤 다시 시도하십시오.
    자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
    218172 PRB: 엔터프라이즈 관리자에서 SA 암호를 변경할 수 없다
경고 데이터베이스를 다시 복원하거나 연결하면 데이터베이스 사용자가 다시 분리되어 3단계를 반복해야 할 수 있습니다.

4단계: 작업, 경고 및 운영자를 이동하는 방법

4단계는 선택 사항입니다. 원본 서버의 모든 작업, 경고 및 운영자에 대한 스크립트를 만든 다음 대상 서버에서 이 스크립트를 실행할 수 있습니다.
  • 작업, 경고 및 운영자를 이동하려면 다음과 같이 하십시오.
    1. SQL Server 엔터프라이즈 관리자를 연 다음 관리 폴더를 확장합니다.
    2. SQL Server 에이전트를 확장한 다음 경고, 작업 또는 운영자를 마우스 오른쪽 단추로 누릅니다.
    3. 모든 작업을 누른 다음 SQL 스크립트 생성을 누릅니다. SQL Server 7.0에서는 Script All Jobs, Alerts 또는 Operators를 누릅니다.
    마우스 오른쪽 단추로 누른 항목에 따라 모든 경고, 모든 작업 또는 모든 운영자에 대한 스크립트를 생성하는 옵션이 제공됩니다.
  • SQL Server 7.0에서 SQL Server 2000으로 또는 SQL Server 7.0과 SQL Server 2000을 실행하는 컴퓨터 서버 사이에서 작업, 경고 및 운영자를 이동할 수 있습니다.
  • 원본 서버에 SQLMail에서 알리도록 설정된 운영자가 있으면 같은 기능을 갖도록 대상 서버에도 SQLMail을 설치해야 합니다. 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
    263556 INF: SQL Mail 구성 방법

5단계: DTS 패키지를 이동하는 방법

5단계는 선택 사항입니다. DTS 패키지가 원본 서버에서 SQL Server나 리포지토리에 저장된 경우에는 원할 때 패키지를 이동할 수 있습니다. 서버 간에 DTS 패키지를 이동하려면 다음 방법 중 하나를 사용하십시오.

방법 1

  1. 원본 서버에서 DTS 패키지를 파일로 저장한 다음 대상 서버에서 이 DTS 패키지 파일을 엽니다.
  2. 대상 서버에서 패키지를 SQL Server나 리포지토리로 저장합니다.
    참고 각 패키지를 한 번에 하나씩 별도의 파일에 이동해야 합니다.

방법 2

  1. DTS 디자이너에서 각 DTS 패키지를 엽니다.
  2. 패키지 메뉴에서 다른 이름으로 저장을 누릅니다.
  3. 대상 SQL Server를 지정합니다.
참고 패키지가 새 서버에서 올바르게 실행되지 않을 수 있습니다. 패키지를 변경하고, 이전 원본 서버에 있는 연결, 파일, 데이터 원본, 프로필 및 기타 정보에 대한 패키지의 모든 참조를 새 대상 서버를 참조하도록 변경해야 할 수 있습니다. 각 패키지의 디자인에 따라 패키지 단위로 이렇게 변경해야 합니다.

추가 정보

복제, 로그 전달, 전체 텍스트 카탈로그, 명명된 백업 장치, 유지 관리 계획 및 연결된 서버 같은 기타 항목도 이동할 수 있습니다. 원본 서버에서 이들 구성에 대해 확인하고 원할 경우 대상 서버에서 수동으로 이를 설치하기 위한 단계를 수행합니다.

전체 텍스트 구성 요소를 이동하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
240867 INF: SQL 7.0 전체 텍스트(Full-Text) 카탈로그 폴더와 파일을 이동, 복사 및 백업하는 방법
이 문서의 단계를 수행하는 경우 데이터베이스 다이어그램, 백업 및 복원 기록은 이동되지 않습니다. 이러한 정보를 이동해야 하는 경우에는 msdb 시스템 데이터베이스를 이동하십시오. msdb 데이터베이스를 이동하는 방법에 대한 자세한 내용은 이 문서의 "1단계: 사용자 데이터베이스를 이동하는 방법" 절에 나와 있는 Microsoft 기술 자료 문서를 참조하십시오. msdb 데이터베이스를 이동하는 경우에는 "4단계: 작업, 경고 및 운영자를 이동하는 방법" 또는 "5단계: DTS 패키지를 이동하는 방법"을 수행할 필요가 없습니다.

참조

자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
320125 HOWTO: 데이터베이스 다이어그램 이동




Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.

속성

기술 자료: 314546 - 마지막 검토: 2013년 7월 16일 화요일 - 수정: 7.2
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 64-bit Edition
  • Microsoft SQL Server 7.0 Standard Edition
키워드:?
kbsqlmanagementtools kbhowtomaster KB314546

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com