적용 대상:SQL Server
현재 서버 인스턴스에서 사용되지 않는 데이터베이스를 분리하고 선택적으로 분리하기 전에 모든 테이블에서 실행됩니다 UPDATE STATISTICS .
복제된 데이터베이스를 분리하려면 게시 취소해야 합니다. 자세한 내용은 이 문서의 뒷부분에 있는 설명 섹션을 참조하세요.
구문
sp_detach_db
[ [ @dbname = ] N'dbname' ]
[ , [ @skipchecks = ] N'skipchecks' ]
[ , [ @keepfulltextindexfile = ] N'keepfulltextindexfile' ]
[ ; ]
인수
[ @dbname = ] N'dbname'
분리할 데이터베이스의 이름입니다.
@dbname sysname이며 기본값은 .입니다NULL.
[ @skipchecks = ] N'skipchecks'
건너뛰거나 실행할 UPDATE STATISTICS지 여부를 지정합니다.
@skipchecks 기본값인 nvarchar(10)NULL. 건너뛰UPDATE STATISTICS려면 .true 명시적으로 실행 UPDATE STATISTICS하려면 .를 지정합니다 false.
기본적으로 UPDATE STATISTICS 테이블 및 인덱스의 데이터에 대한 정보를 업데이트하기 위해 수행됩니다. 수행 UPDATE STATISTICS 은 읽기 전용 미디어로 이동해야 하는 데이터베이스에 유용합니다.
[ @keepfulltextindexfile = ] N'keepfulltextindexfile'
분리 중인 데이터베이스와 연결된 전체 텍스트 인덱스 파일이 데이터베이스 분리 작업 중에 삭제되지 않도록 지정합니다.
@keepfulltextindexfile 기본값인 nvarchar(10)true.
- @keepfulltextindexfile 경우 데이터베이스가
false읽기 전용이 아닌 한 데이터베이스와 연결된 모든 전체 텍스트 인덱스 파일과 전체 텍스트 인덱스의 메타데이터가 삭제됩니다. -
NULL또는 전체 텍스트 관련 메타데이터가 유지되는 경우true
Important
SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 애플리케이션은 수정하세요.
반환 코드 값
0(성공) 또는 1(실패).
결과 집합
없음.
설명
데이터베이스가 분리되면 모든 메타데이터가 삭제됩니다. 데이터베이스가 로그인 계정의 기본 데이터베이스인 master 경우 해당 기본 데이터베이스가 됩니다.
참고 항목
모든 로그인 계정의 기본 데이터베이스를 보는 방법에 대한 자세한 내용은 sp_helplogins 참조하세요. 필요한 권한이 있는 경우 ALTER LOGIN을 사용하여 로그인에 새 기본 데이터베이스를 할당할 수 있습니다.
제한 사항
다음 중 어느 것이라도 true이면 데이터베이스를 분리할 수 없습니다.
데이터베이스가 현재 사용 중입니다. 자세한 내용은 단독 액세스 가져오기를 참조하세요.
데이터베이스가 복제된 경우 해당 데이터베이스가 게시됩니다.
데이터베이스를 분리하려면 먼저 sp_replicationdboption 실행하여 게시를 사용하지 않도록 설정해야 합니다.
sp_replicationdboption을 사용할 수 없는 경우 sp_removedbreplication을 실행하여 복제를 제거할 수 있습니다.데이터베이스에 데이터베이스 스냅샷이 있습니다.
데이터베이스를 분리하려면 먼저 모든 스냅샷을 삭제해야 합니다. 자세한 내용은 데이터베이스 스냅샷 삭제를 참조하세요.
데이터베이스 스냅샷은 분리하거나 연결할 수 없습니다.
데이터베이스가 미러링되고 있습니다.
데이터베이스 미러링 세션이 종료될 때까지 데이터베이스를 분리할 수 없습니다. 자세한 내용은 데이터베이스 미러링 제거(SQL Server)를 참조하세요.
데이터베이스가 의심스럽다.
주의 대상 데이터베이스를 분리하기 전에 응급 모드로 설정해야 합니다. 데이터베이스를 긴급 모드로 전환하는 방법에 대한 자세한 내용은 ALTER DATABASE를 참조하세요.
데이터베이스는 시스템 데이터베이스입니다.
단독 액세스 가져오기
데이터베이스를 분리하려면 해당 데이터베이스를 단독으로 사용해야 합니다. 분리하려는 데이터베이스를 사용 중인 경우 분리하기 전에 데이터베이스를 모드로 SINGLE_USER 설정하여 단독 액세스를 얻습니다.
데이터베이스를 설정하기 SINGLE_USER전에 옵션이 .로 설정되어 있는지 AUTO_UPDATE_STATISTICS_ASYNC 확인합니다 OFF. 이 옵션을 설정 ON하면 통계를 업데이트하는 데 사용되는 백그라운드 스레드가 데이터베이스에 대한 연결을 사용하므로 단일 사용자 모드에서 데이터베이스에 액세스할 수 없습니다. 자세한 내용은 데이터베이스를 단일 사용자 모드로 설정을 참조하세요.
예를 들어, 다음 ALTER DATABASE 문장은 모든 현재 사용자가 데이터베이스에서 연결을 끊은 후 AdventureWorks2025 데이터베이스에 대한 독점 접근 권한을 얻습니다.
USE master;
ALTER DATABASE AdventureWorks2022
SET SINGLE_USER;
GO
현재 사용자가 데이터베이스에서 즉시 또는 지정된 시간(초) 내에 강제로 나가도록 하려면 이 옵션을 사용할 ROLLBACK 수도 있습니다.
ALTER DATABASE <database_name>
SET SINGLE_USER
WITH ROLLBACK <rollback_option>;
자세한 내용은 ALTER DATABASE를 참조하세요.
데이터베이스 다시 연결
분리된 파일은 그대로 유지되며(또는 CREATE DATABASE 옵션과 함께FOR ATTACH) 사용하여 FOR ATTACH_REBUILD_LOG 다시 연결할 수 있습니다. 또한 파일을 다른 서버로 이동하거나 첨부할 수 있습니다.
사용 권한
sysadmin 고정 서버 역할의 멤버 자격 또는 데이터베이스의 db_owner 역할의 멤버 자격이 필요합니다.
예제
이 문서의 코드 샘플은 AdventureWorks2025 또는 AdventureWorksDW2025 샘플 데이터베이스를 사용합니다. 이 데이터베이스는 Microsoft SQL Server 샘플 및 커뮤니티 프로젝트 홈페이지에서 다운로드할 수 있습니다.
다음 예제에서는 @skipchecksAdventureWorks2025를 분리 합니다true.
EXECUTE sp_detach_db 'AdventureWorks2022', 'true';
다음 예에서는 AdventureWorks2025 데이터베이스를 분리하고 전체 텍스트 인덱스 파일과 전체 텍스트 인덱스의 메타데이터를 유지합니다. 이 명령은 기본 동작인 UPDATE STATISTICS를 실행합니다.
EXECUTE sp_detach_db
@dbname = 'AdventureWorks2022',
@keepfulltextindexfile = 'true';