분리 및 연결을 사용하여 데이터베이스 이동(Transact-SQL)
적용 대상: SQL Server
이 항목에서는 분리된 데이터베이스를 다른 위치로 이동하고 SQL Server의 동일하거나 다른 서버 인스턴스에 다시 연결하는 방법에 대해 설명합니다. 하지만 데이터베이스를 이동할 때는 분리 및 연결 작업 대신 계획된 ALTER DATABASE 재배치 프로시저를 사용하는 것이 좋습니다. 자세한 내용은 사용자 데이터베이스 이동을 참조하세요.
Important
출처를 알 수 없거나 신뢰할 수 없는 데이터베이스는 연결하거나 복원하지 않는 것이 좋습니다. 이러한 데이터베이스에 포함된 악성 코드가 의도하지 않은 Transact-SQL 코드를 실행하거나 스키마 또는 물리적 데이터베이스 구조를 수정하여 오류가 발생할 수 있습니다. 알 수 없거나 신뢰할 수 없는 소스의 데이터베이스를 사용하기 전에 비프로덕션 서버의 데이터베이스에서 DBCC CHECKDB 를 실행하여 데이터베이스에서 코드(예: 저장 프로시저 또는 다른 사용자 정의 코드)를 시험해 보세요.
절차
분리 및 연결 작업을 사용하여 데이터베이스를 이동하는 방법
데이터베이스를 분리합니다. 자세한 내용은 데이터베이스 분리를 참조하세요.
Windows 탐색기 또는 Windows 명령 프롬프트 창에서, 분리된 데이터베이스 파일 또는 파일 및 로그 파일 또는 파일을 새 위치로 이동합니다.
새 로그 파일을 만들려는 경우에도 로그 파일을 이동해야 합니다. 경우에 따라 데이터베이스를 다시 연결하려면 기존 로그 파일이 필요합니다. 따라서 데이터베이스가 분리된 로그 파일 없이도 성공적으로 연결될 때까지 모든 분리된 로그 파일을 항상 보존해야 합니다.
참고 항목
로그 파일을 지정하지 않고 데이터베이스를 연결하려고 하면 연결 작업이 원래 위치에서 로그 파일을 찾습니다. 로그의 복사본이 원래 위치에 계속 있으면 해당 복사본이 연결됩니다. 원본 로그 파일을 사용하지 않도록 하려면 새 로그 파일의 경로를 지정하거나 로그 파일의 원본 복사본을 제거합니다(새 위치에 복사한 후).
복사된 파일을 연결합니다. 자세한 내용은 Attach a Database을 참조하세요.
예시
다음 예에서는 MyAdventureWorks
라는 이름의 AdventureWorks2022 데이터베이스 복사본을 만듭니다. Transact-SQL 문은 연결한 서버 인스턴스에 연결된 쿼리 편집기 창에서 실행됩니다.
다음 Transact-SQL 문을 실행하여 AdventureWorks2022 데이터베이스를 분리합니다.
USE master; GO EXEC sp_detach_db @dbname = N'AdventureWorks2022'; GO
원하는 메서드를 사용하여 데이터베이스 파일(AdventureWorks208R2_Data.mdf 및 AdventureWorks208R2_log)을 C:\MySQLServer\AdventureWorks208R2_Data.mdf 및 C:\MySQLServer\AdventureWorks208R2_Log.ldf 위치에 각각 복사합니다.
Important
프로덕션 데이터베이스의 경우 데이터베이스와 트랜잭션 로그를 별도의 디스크에 저장합니다.
네트워크를 통해 원격 컴퓨터의 디스크에 파일을 복사하려면 원격 위치의 UNC(범용 명명 규칙) 이름을 사용합니다. UNC 이름은 \\Servername\Sharename\Path\Filename의 형식을 사용합니다. 로컬 하드 디스크에 파일을 쓸 때와 마찬가지로 원격 디스크의 파일을 읽거나 쓰는 데 필요한 적절한 권한을 SQL Server 인스턴스에서 사용하는 사용자 계정에 부여해야 합니다.
이동된 데이터베이스를 연결하고 필요에 따라 다음 Transact-SQL 문을 실행하여 해당 데이터베이스의 로그를 연결합니다.
USE master; GO CREATE DATABASE MyAdventureWorks ON (FILENAME = 'C:\MySQLServer\AdventureWorks2022_Data.mdf'), (FILENAME = 'C:\MySQLServer\AdventureWorks2022_Log.ldf') FOR ATTACH; GO
SQL Server Management Studio에서 새로 연결되는 데이터베이스는 개체 탐색기에 즉시 표시되지 않습니다. 데이터베이스를 보려면 개체 탐색기에서 보기를 클릭한 다음 새로 고침을 클릭합니다. 개체 탐색기에서 데이터베이스 노드가 확장되면 이제 새로 연결된 데이터베이스가 데이터베이스 목록에 표시됩니다.