sp_attach_db(Transact-SQL)

서버에 데이터베이스를 연결합니다.

중요 정보중요

Microsoft SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 응용 프로그램은 수정하십시오. 대신 CREATE DATABASE database_name FOR ATTACH를 사용하는 것이 좋습니다. 자세한 내용은 CREATE DATABASE(Transact-SQL)를 참조하십시오.

[!참고]

하나 이상의 로그 파일에 새 위치가 있는 경우 여러 로그 파일을 다시 작성하려면 CREATE DATABASE database_name FOR ATTACH_REBUILD_LOG를 사용합니다.

보안 정보보안 정보

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

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

sp_attach_db [ @dbname= ] 'dbname'
        , [ @filename1= ] 'filename_n' [ ,...16 ] 

인수

  • [ @dbname= ] **'**dbnam '
    서버에 연결될 데이터베이스의 이름입니다. 이 이름은 고유해야 합니다. dbname은 sysname이며 기본값은 NULL입니다.

  • [ @filename1= ] 'filename_n'
    경로를 포함한 데이터베이스 파일의 물리적 이름입니다. filename_n은 nvarchar(260)이며 기본값은 NULL입니다. 파일 이름은 16개까지 지정할 수 있습니다. 매개 변수 이름은 @filename1에서 시작하여 @filename16까지 증가합니다. 파일 이름 목록에는 적어도 주 파일이 포함되어야 합니다. 주 파일에는 데이터베이스의 다른 파일을 가리키는 시스템 테이블이 포함됩니다. 또한 목록은 데이터베이스가 분리된 다음 이동된 모든 파일을 포함해야 합니다.

    [!참고]

    이 인수는 CREATE DATABASE 문의 FILENAME 매개 변수에 매핑됩니다. 자세한 내용은 CREATE DATABASE(Transact-SQL)를 참조하십시오.

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

반환 코드 값

0(성공) 또는 1(실패)

결과 집합

없음

주의

sp_attach_db 저장 프로시저는 명시적 sp_detach_db 작업을 사용하여 데이터베이스 서버에서 이전에 분리된 데이터베이스나 복사된 데이터베이스에서만 실행해야 합니다. 16개 이상의 파일을 지정해야 하는 경우에는 CREATE DATABASE database_name FOR ATTACH 또는 CREATE DATABASE database_name FOR_ATTACH_REBUILD_LOG를 사용합니다. 자세한 내용은 CREATE DATABASE(Transact-SQL)를 참조하십시오.

지정되지 않은 모든 파일은 마지막으로 알려진 위치에 있는 것으로 가정합니다. 다른 위치에서 파일을 사용하려면 새 위치를 지정해야 합니다.

최신 버전의 SQL Server에서 만든 데이터베이스를 이전 버전에서 연결할 수 없습니다.

[!참고]

데이터베이스 스냅숏은 분리하거나 연결할 수 없습니다.

분리되지 않고 복사된 복제 데이터베이스를 연결하는 경우에는 다음 사항을 고려합니다.

  • 데이터베이스를 원래 데이터베이스와 동일한 서버 인스턴스 및 버전에 연결하는 경우에는 추가 작업이 필요하지 않습니다.

  • 데이터베이스를 동일한 서버 인스턴스의 업그레이드된 버전에 연결하는 경우에는 연결 작업이 완료된 다음 sp_vupgrade_replication을 실행하여 복제를 업그레이드해야 합니다.

  • 데이터베이스를 버전에 관계없이 다른 서버 인스턴스에 연결하는 경우에는 연결 작업이 완료된 후 sp_removedbreplication을 실행하여 복제를 제거해야 합니다.

SQL Server 2008 R2, SQL Server 2008에 연결하려면 원본 데이터베이스의 버전이 80(SQL Server 2000) 이상이어야 합니다. 호환성 수준이 80 미만인 SQL Server 2000 또는 SQL Server 2005 데이터베이스를 연결하면 호환성이 80으로 설정됩니다.

사용 권한

데이터베이스 연결 시 권한 처리 방법은 CREATE DATABASE(Transact-SQL)를 참조하십시오.

다음 예에서는 AdventureWorks2008R2의 파일을 현재 서버에 연결합니다.

EXEC sp_attach_db @dbname = N'AdventureWorks2008R2', 
    @filename1 = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\AdventureWorks2008R2_Data.mdf', 
    @filename2 = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\AdventureWorks2008R2_log.ldf';