다음을 통해 공유


방법: 분리 및 연결을 사용하여 데이터베이스 이동(Transact-SQL)

중요 정보중요

데이터베이스를 이동할 때는 분리 및 연결 작업 사용 대신 계획된 ALTER DATABASE 재배치 프로시저를 사용하는 것이 좋습니다. 자세한 내용은 ALTER DATABASE(Transact-SQL)를 참조하십시오.

분리된 데이터베이스를 다른 위치로 이동하여 동일한 서버 인스턴스나 다른 서버 인스턴스에 다시 연결할 수 있습니다.

보안 정보보안 정보

알 수 없거나 신뢰할 수 없는 출처의 데이터베이스는 연결 또는 복원하지 않는 것이 좋습니다. 이러한 데이터베이스에 포함된 악성 코드가 의도하지 않은 Transact-SQL 코드를 실행하거나 스키마 또는 물리적 데이터베이스 구조를 수정하여 오류가 발생할 수 있습니다. 알 수 없거나 신뢰할 수 없는 출처의 데이터베이스를 사용하기 전에 프로덕션 서버가 아닌 서버에서 해당 데이터베이스에 대해 DBCC CHECKDB를 실행하고 저장 프로시저 또는 다른 사용자 정의 코드 같은 데이터베이스의 코드도 검사하십시오.

SQL Server 2008 서버 인스턴스에 전체 텍스트 카탈로그 파일이 포함된 SQL Server 2005 데이터베이스를 연결할 경우 SQL Server 2005에서와 같이 다른 데이터베이스 파일과 함께 이전 위치에서 카탈로그 파일이 연결됩니다. 자세한 내용은 전체 텍스트 검색 업그레이드를 참조하십시오. SQL Server 2008 서버 인스턴스에서 전체 텍스트 카탈로그 파일을 포함하는 업그레이드된 SQL Server 2005 데이터베이스를 분리할 경우 카탈로그 파일은 SQL Server 2005에서와 같이 다른 데이터베이스 파일과 함께 보관됩니다.

[!참고]

분리와 연결을 사용하여 SQL Server 2000 또는 SQL Server 2005 데이터베이스를 SQL Server 2008로 업그레이드할 수도 있습니다. 자세한 내용은 방법: 분리 및 연결을 사용하여 데이터베이스 업그레이드(Transact-SQL)를 참조하십시오.

절차

분리 및 연결을 사용하여 데이터베이스를 복사하려면

  1. sp_detach_db 저장 프로시저를 사용하여 데이터베이스를 분리합니다.

  2. Windows 탐색기나 Windows 명령 프롬프트 창에서 분리된 데이터베이스 파일과 로그 파일을 새 위치로 이동합니다.

    [!참고]

    전자 메일로 보낼 수 있을 정도로 파일 크기가 작으면 한 개의 파일로 구성된 데이터베이스를 이동하는 데 전자 메일을 사용할 수 있습니다.

    새 로그 파일을 작성할 경우에도 로그 파일을 이동해야 합니다. 경우에 따라 데이터베이스를 다시 연결하려면 기존 로그 파일이 필요합니다. 따라서 데이터베이스가 분리된 로그 파일 없이도 성공적으로 연결될 때까지 모든 분리된 로그 파일을 항상 보존하십시오.

    [!참고]

    로그 파일을 지정하지 않고 데이터베이스를 연결할 경우 연결 작업은 원래 위치에서 로그 파일을 검색합니다. 원래 위치에 로그 복사본이 있으면 해당 복사본이 연결됩니다. 원래 로그 파일을 사용하지 않으려면 새 로그 파일의 경로를 지정하거나 로그 파일의 원본을 새 위치로 복사한 후 제거합니다.

  3. CREATE DATABASE Transact-SQL 문에 FOR ATTACH [ WITH <service_broker_option> ] 절 또는 FOR ATTACH_REBUILD_LOG 절을 사용하여 복사된 파일을 연결합니다. 자세한 내용은 CREATE DATABASE(Transact-SQL)를 참조하십시오. 각 데이터베이스에는 Service Broker 메시지를 데이터베이스로 라우팅하는 데 사용되는 고유 식별자가 포함되어 있습니다. Service Broker를 사용하는 데이터베이스인 경우 Service Broker ID 관리를 참조하십시오.

    [!참고]

    개체 탐색기를 사용하여 데이터베이스를 연결하는 방법은 방법: 데이터베이스 연결(SQL Server Management Studio)을 참조하십시오.

다음 예에서는 MyAdventureWorks라고 하는 AdventureWorks 데이터베이스의 복사본을 만듭니다. Transact-SQL 문은 AdventureWorks를 연결한 서버 인스턴스에 연결된 쿼리 편집기 창에서 실행됩니다.

  1. 다음 Transact-SQL 문을 실행하여 AdventureWorks 데이터베이스를 분리합니다.

    USE master;
    GO
    EXEC sp_detach_db @dbname = N'AdventureWorks';
    GO
    
  2. 선택한 방법을 사용하여 데이터베이스 파일(AdventureWorks_Data.mdf 및 AdventureWorks_log)을 C:\MySQLServer\AdventureWorks_Data.mdf 및 C:\MySQLServer\AdventureWorks_Log.ldf로 각각 복사할 수 있습니다.

    중요 정보중요

    프로덕션 데이터베이스의 경우 데이터베이스와 트랜잭션 로그를 별도의 디스크에 저장합니다.

    네트워크를 통해 원격 컴퓨터의 디스크로 파일을 복사하려면 원격 위치의 UNC(Universal Naming Convention) 이름을 사용합니다. UNC 이름의 형식은 **\\Servername\Sharename\Path\**Filename입니다. 로컬 하드 디스크에 파일을 쓸 경우 원격 디스크의 파일을 읽거나 파일에 쓰는 데 필요한 해당 권한은 SQL Server 인스턴스에서 사용하는 사용자 계정에게 부여되어야 합니다.

  3. 다음 Transact-SQL 문을 실행하여 이동된 데이터베이스와 필요에 따라 해당 로그를 연결합니다.

    USE master;
    GO
    CREATE DATABASE MyAdventureWorks 
        ON (FILENAME = 'C:\MySQLServer\AdventureWorks_Data.mdf'),
        (FILENAME = 'C:\MySQLServer\AdventureWorks_Log.ldf')
        FOR ATTACH;
    GO
    

    [!참고]

    SQL Server Management Studio에서 새로 연결되는 데이터베이스는 개체 탐색기에 즉시 표시되지 않습니다. 데이터베이스를 보려면 개체 탐색기에서 보기, 새로 고침을 차례로 클릭합니다. 개체 탐색기에서 데이터베이스 노드가 확장될 때 새로 연결된 데이터베이스가 데이터베이스 목록에 나타납니다.