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를 실행하고 저장 프로시저 또는 다른 사용자 정의 코드 같은 데이터베이스의 코드도 검사하십시오. |
구문
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 2012 서버 인스턴스에 전체 텍스트 카탈로그 파일이 포함된 SQL Server 2005 데이터베이스를 연결할 경우 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 2005 이상 데이터베이스만 SQL Server 2012에 연결할 수 있습니다. 데이터베이스의 호환성 수준이 90보다 작은 경우 데이터베이스를 SQL Server 2012에 연결할 때 해당 호환성 수준이 수준 90으로 변경됩니다.
데이터베이스가 새 SQL Server 인스턴스로 처음으로 연결되거나 복원될 때 데이터베이스 마스터 키(서비스 마스터 키로 암호화됨)의 복사본은 서버에 아직 저장되지 않은 상태입니다. DMK(데이터베이스 마스터 키)를 해독하려면 OPEN MASTER KEY 문을 사용해야 합니다. DMK를 해독한 후에는 ALTER MASTER KEY REGENERATE 문을 사용하여 자동 해독되도록 옵션을 설정하여 SMK(서비스 마스터 키)로 암호화된 DMK의 복사본을 서버에 제공할 수 있습니다. 데이터베이스가 이전 버전에서 업그레이드되지 않은 경우에는 DMK를 다시 생성해야 최신 AES 알고리즘을 사용할 수 있습니다. DMK를 다시 생성하는 방법은 ALTER MASTER KEY(Transact-SQL)를 참조하십시오. AES로 업그레이드하기 위해 DMK 키를 다시 생성하는 데 소요되는 시간은 DMK에서 보호하는 개체 수에 따라 달라집니다. AES로 업그레이드하기 위해 DMK 키를 다시 생성하는 작업은 한 번만 필요하며 키 회전 전략의 일부로 이후에 수행하는 다시 생성 작업에 영향을 주지 않습니다.
사용 권한
데이터베이스 연결 시 사용 권한 처리 방법은 CREATE DATABASE(Transact-SQL)를 참조하십시오.
예
다음 예에서는 AdventureWorks2012 의 파일을 현재 서버에 연결합니다.
EXEC sp_attach_db @dbname = N'AdventureWorks2012',
@filename1 =
N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\AdventureWorks2012_Data.mdf',
@filename2 =
N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\AdventureWorks2012_log.ldf';
참고 항목
참조
sp_removedbreplication(Transact-SQL)