데이터베이스 연결
적용 대상: SQL Server
이 문서에서는 SQL Server Management Studio 또는 Transact-SQL을 사용하여 SQL Server에서 데이터베이스를 연결하는 방법에 대해 설명합니다. 이 기능을 사용하여 SQL Server 데이터베이스를 복사, 이동 또는 업그레이드할 수 있습니다.
제한 사항
제한 사항 목록은 데이터베이스 분리 및 연결(SQL Server)을 참조하세요.
필수 조건
계속하기 전에 다음 필수 구성 요소를 모두 검토합니다.
한 인스턴스에서 다른 인스턴스로 데이터베이스를 이동하는 경우 먼저 기존 SQL 인스턴스에서 데이터베이스를 분리해야 합니다. 분리되지 않은 데이터베이스를 연결하려고 하면 오류가 반환됩니다. 자세한 내용은 데이터베이스 분리를 참조하세요.
데이터베이스를 연결할 경우 데이터베이스의 모든 데이터 파일이 사용 가능해야 합니다. 이러한 파일에는 확장명이 .mdf 또는 .ndf(데이터 파일의 경우), .ldf(트랜잭션 로그 파일의 경우)인 경우가 많습니다. 또한 FILESTREAM 데이터에 대한 모든 파일 그룹이 있어야 하며 사용할 수 있어야 합니다. FILESTREAM 사용 데이터베이스를 연결하는 방법에 대한 자세한 내용은 FILESTREAM 사용 데이터베이스 이동을 참조하세요.
데이터베이스를 처음 만들거나 마지막으로 연결했을 때와 다른 경로가 있는 데이터 파일의 경우 파일의 현재 경로를 지정해야 합니다.
데이터베이스 엔진 서비스 계정에는 새 위치의 파일을 읽을 수 있는 권한이 있어야 합니다.
MDF 및 LDF 파일이 서로 다른 디렉터리에 있고 데이터베이스 연결 시 경로 중 하나에
\\?\GlobalRoot
가 포함되어 있으면 작업이 실패합니다.
연결하는 게 가장 좋은 방법일까요?
같은 인스턴스에서 데이터베이스 파일을 옮길 때는 분리와 연결 작업 대신 계획된 ALTER DATABASE
재배치 프로시저를 사용하여 인스턴스 내에서 데이터베이스를 옮기는 것이 좋습니다. 자세한 내용은 사용자 데이터베이스 이동을 참조하세요.
백업 및 복구에는 분리 및 연결을 사용하지 않는 것이 좋습니다. SQL Server 외부에서 백업할 파일을 분리할 때 사용할 수 있는 트랜잭션 로그 백업 또는 지정 시간 복구가 없습니다.
보안
파일 액세스 권한은 데이터베이스가 분리되고 연결된 경우를 포함하여 많은 데이터베이스 작업 중에 설정됩니다. 데이터베이스를 분리 또는 연결하는 경우 데이터베이스 엔진은 이 작업을 수행하는 연결의 Windows 계정을 가장하여 해당 계정에 데이터베이스 및 로컬 파일에 액세스 권한을 부여하려고 시도합니다. SQL Server 로그인을 사용하는 혼합 보안 계정에는 이러한 가장 방법을 사용할 수 없습니다.
다음 표에서는 연결 또는 분리 작업이 완료된 후에 데이터베이스와 로그 파일에 설정되는 사용 권한과 데이터베이스 엔진에서 연결 계정을 가장할 수 있는지 여부를 보여 줍니다.
연산 | 연결 계정을 가장할 수 있습니다. | 파일 사용 권한은 다음으로 부여됩니다. |
---|---|---|
분리 | 예 | 작업을 수행하는 계정만 해당합니다. 데이터베이스가 분리된 후에 추가 계정이 필요한 경우에는 운영 체제 관리자가 추가할 수 있습니다. |
분리 | 아니요 | SQL Server(MSSQLSERVER) 서비스 계정 및 로컬 Windows Administrators 그룹 멤버 |
Attach | 예 | SQL Server(MSSQLSERVER) 서비스 계정 및 로컬 Windows Administrators 그룹 멤버 |
Attach | 아니요 | SQL Server(MSSQLSERVER) 서비스 계정 |
SQL Server 서비스에 대한 서비스별 SID에 부여된 파일 시스템 권한에 대한 자세한 내용은 데이터베이스 엔진 액세스에 대한 파일 시스템 권한 구성을 참조하세요.
주의
출처를 알 수 없거나 신뢰할 수 없는 데이터베이스는 연결하거나 복원하지 않는 것이 좋습니다. 이러한 데이터베이스에 포함된 악성 코드가 의도하지 않은 Transact-SQL 코드를 실행하거나 스키마 또는 물리적 데이터베이스 구조를 수정하여 오류가 발생할 수 있습니다. 알 수 없거나 신뢰할 수 없는 소스의 데이터베이스를 사용하기 전에 비프로덕션 서버의 데이터베이스에서 DBCC CHECKDB 를 실행하여 데이터베이스에서 코드(예: 저장 프로시저 또는 다른 사용자 정의 코드)를 시험해 보세요. 데이터베이스 연결에 대한 자세한 내용 및 데이터베이스를 연결할 때 메타데이터에 적용된 변경 내용에 대한 자세한 내용은 데이터베이스 분리 및 연결(SQL Server)을 참조하세요.
사용 권한
CREATE DATABASE
, CREATE ANY DATABASE
또는 ALTER ANY DATABASE
권한이 필요합니다.
SSMS(SQL Server Management Studio) 사용
데이터베이스 이동 전
데이터베이스를 이동하는 경우 기존 SQL Server 인스턴스에서 분리하기 전에 데이터베이스 속성 페이지를 사용하여 데이터베이스 및 현재 위치와 연결된 파일을 검토합니다.
SQL Server Management Studio의 개체 탐색기에서 SQL Server 데이터베이스 엔진의 인스턴스에 연결한 다음 해당 인스턴스를 확장합니다.
데이터베이스를 확장하고 분리할 사용자 데이터베이스의 이름을 선택합니다.
데이터베이스 이름을 마우스 오른쪽 단추로 클릭한 다음 속성을 선택합니다. 파일 페이지를 선택하고 데이터베이스 파일: 테이블의 항목을 검토합니다.
분리, 이동, 연결하기 전에 데이터베이스와 연결된 모든 파일을 고려해야 합니다. 그런 다음, 다음 섹션에서 데이터베이스 분리, 파일 복사, 연결 단계를 진행합니다. 자세한 내용은 데이터베이스 분리를 참조하세요.
데이터베이스 연결
SQL Server Management Studio 개체 탐색기에서 SQL Server 데이터베이스 엔진의 인스턴스에 연결하고 선택하여 SSMS에서 그 인스턴스 뷰를 펼칩니다.
데이터베이스를 마우스 오른쪽 단추로 클릭하고 연결을 선택합니다.
데이터베이스 연결 대화 상자에서 연결할 데이터베이스를 지정하려면 추가를 선택합니다. 데이터베이스 파일 찾기 대화 상자에서 데이터베이스가 있는 위치를 선택하고 디렉터리 트리를 확장하여 데이터베이스의 .mdf 파일을 찾아 선택합니다. 예를 들어:
C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\AdventureWorks2022_Data.mdf
Important
이미 연결된 데이터베이스를 선택하려고 하면 오류가 발생합니다.
연결할 데이터베이스
선택된 데이터베이스에 대한 정보를 표시합니다.<열 머리글 없음>
연결 작업의 상태를 나타내는 아이콘이 표시됩니다. 가능한 아이콘은 상태 설명에 설명되어 있습니다.MDF 파일 위치
선택한 MDF 파일의 경로와 파일 이름을 표시합니다.데이터베이스 이름
데이터베이스의 이름을 표시합니다.다른 이름으로 연결
필요에 따라 연결할 데이터베이스의 이름을 다른 이름으로 지정합니다.담당자
필요에 따라 다른 소유자를 선택할 수 있는 가능한 데이터베이스 소유자의 드롭다운 목록을 제공합니다.상태
다음 표에 설명된 내용과 같이 데이터베이스의 상태를 표시합니다.Icon 상태 텍스트 설명 (아이콘 없음) (텍스트 없음) 연결 작업이 시작되지 않았거나 이 개체에 대해 보류 중입니다. 대화 상자가 열릴 때 기본값입니다. 녹색, 오른쪽을 향하고 있는 삼각형 진행 중 연결 작업이 시작되었지만 완료되지 않았습니다. 녹색 확인 표시. Success 개체를 연결했습니다. 흰색 십자가가 들어 있는 빨간색 원 Error 연결 작업에 오류가 발생하여 성공적으로 완료되지 않았습니다. 오른쪽과 왼쪽에 두 개의 검정 사분면이 있고 위쪽과 아래쪽에 두 개의 흰색 사분면이 있는 원 Stopped 사용자가 작업을 중지하여 연결 작업이 완료되지 않았습니다. 시계 반대 방향을 가리키는 곡선 모양의 화살표가 있는 원 롤백할 연결 작업이 성공했지만 다른 개체를 첨부하는 동안 오류로 인해 롤백되었습니다. Message
빈 메시지 또는 "파일을 찾을 수 없습니다"라는 하이퍼링크를 표시합니다.추가
필요한 주 데이터베이스 파일을 찾습니다. 사용자가 .mdf 파일을 선택하면 연결할 데이터베이스 표의 각 필드에 적절한 정보가 자동으로 입력됩니다.제거
그리드를 첨부할 데이터베이스에서 선택한 파일을 제거합니다."<database_name>" 데이터베이스 세부 정보
첨부할 파일의 이름을 표시합니다. 파일의 경로 이름을 확인하거나 변경하려면 찾아보기 단추(...)를 선택합니다.참고 항목
파일이 없으면 메시지 열에 "찾을 수 없음"이 표시됩니다. 로그 파일을 찾을 수 없는 경우 다른 디렉터리에 있거나 삭제되었습니다. 데이터베이스 세부 정보 약식 표의 파일 경로를 업데이트하여 올바른 위치를 가리키거나 그리드에서 로그 파일을 제거해야 합니다. .ndf 데이터 파일을 찾을 수 없는 경우 올바른 위치를 가리키도록 그리드에서 해당 경로를 업데이트해야 합니다.
원본 파일 이름
데이터베이스에 속한 첨부 파일의 이름을 표시합니다.파일 유형
파일의 형식( 데이터 또는 로그)을 나타냅니다.현재 파일 경로
선택한 데이터베이스 파일의 경로를 표시합니다. 경로를 수동으로 편집할 수 있습니다.Message
빈 메시지 또는 "파일을 찾을 수 없습니다"라는 하이퍼링크를 표시합니다.
Transact-SQL 사용
데이터베이스 이동 전
데이터베이스를 이동하는 경우 기존 SQL Server 인스턴스에서 분리하기 전에 sys.database_files
시스템 카탈로그 뷰를 사용하여 데이터베이스 및 현재 위치와 연결된 파일을 검토합니다. 자세한 내용은 sys.database_files (Transact-SQL)를 참조하세요.
SQL Server Management Studio에서 새 쿼리를 클릭하여 쿼리 편집기를 엽니다.
다음 Transact-SQL 스크립트를 쿼리 편집기에 복사한 다음 실행을 선택합니다. 이 스크립트는 물리적 데이터베이스 파일의 위치를 표시합니다. 분리/연결을 통해 데이터베이스를 이동하는 경우 모든 파일을 고려해야 합니다.
USE [database_name] GO SELECT type_desc, name, physical_name from sys.database_files;
분리, 이동, 연결하기 전에 데이터베이스와 연결된 모든 파일을 고려해야 합니다. 그런 다음, 다음 섹션에서 데이터베이스 분리, 파일 복사, 연결 단계를 진행합니다. 자세한 내용은 데이터베이스 분리를 참조하세요.
데이터베이스를 연결하려면
데이터베이스 엔진에 연결합니다.
표준 도구 모음에서 새 쿼리를 선택합니다.
FOR ATTACH
절이 포함된 CREATE DATABASE 문을 사용합니다.다음 예시를 복사하여 쿼리 창에 붙여넣고 실행을 선택합니다. 이 예에서는 AdventureWorks2022 데이터베이스의 모든 파일을 연결하고 데이터베이스 이름을
MyAdventureWorks
로 바꿉니다.CREATE DATABASE MyAdventureWorks ON (FILENAME = 'C:\MySQLServer\AdventureWorks_Data.mdf'), (FILENAME = 'C:\MySQLServer\AdventureWorks_Log.ldf') FOR ATTACH;
데이터베이스에 추가 데이터 파일(일반적으로 .mdf 또는 .ndf)이 있을 수 있으며
CREATE DATABASE ... FOR ATTACH
문에 포함할 추가 파일이 필요할 수 있습니다. 또한 FILESTREAM 데이터에 대한 모든 파일 그룹도 문에 포함되어야 합니다. FILESTREAM 사용 데이터베이스를 연결하는 방법에 대한 자세한 내용은 FILESTREAM 사용 데이터베이스 이동을 참조하세요.참고 항목
또는 sp_attach_db 사용하거나 sp_attach_single_file_db 저장 프로시저를 사용할 수 있습니다. 그러나 이 절차는 Microsoft SQL Server의 향후 버전에서 제거될 예정입니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 애플리케이션은 수정하세요. 대신
CREATE DATABASE ... FOR ATTACH
를 사용하는 것이 좋습니다.
SQL Server 데이터베이스를 업그레이드한 후
데이터베이스 호환성 수준
연결 방법을 사용하여 데이터베이스를 업그레이드하면 데이터베이스를 사용할 수 있게 됩니다. 데이터베이스는 새 인스턴스의 내부 버전 수준으로 자동 업그레이드됩니다. 데이터베이스에 전체 텍스트 인덱스가 있는 경우 업그레이드 프로세스는 전체 텍스트 업그레이드 옵션 서버 속성의 설정에 따라 인덱스를 가져오거나, 다시 설정하거나, 다시 작성합니다. 업그레이드 옵션이 가져오기 또는 다시 작성으로 설정되어 있는 경우 업그레이드하는 동안 전체 텍스트 인덱스를 사용할 수 없습니다. 인덱싱되는 데이터 양에 따라 가져오기 작업은 몇 시간씩 걸릴 수 있으며 다시 작성 작업은 10배 정도 더 걸릴 수 있습니다. 업그레이드 옵션이 가져오기로 설정되어 있으면 전체 텍스트 카탈로그를 사용할 수 없는 경우 관련된 전체 텍스트 인덱스가 다시 작성됩니다.
업그레이드 후에는 이전 호환성 수준이 새 버전에서 지원되지 않는 한 업그레이드 전에 데이터베이스 호환성 수준이 호환성 수준에 유지됩니다. 이 경우 업그레이드된 데이터베이스 호환성 수준은 지원되는 가장 낮은 호환성 수준으로 설정됩니다. 예를 들어 SQL Server 2019(15.x) 인스턴스에 연결하기 전에 호환성 수준 90이었던 데이터베이스를 연결한 경우 업그레이드 후 호환성 수준이 SQL Server 2019(15.x)에서 지원되는 가장 낮은 호환성 수준인 100으로 설정됩니다. 자세한 내용은 ALTER DATABASE 호환성 수준(Transact-SQL)을 참조하세요.
CDC(변경 데이터 캡처)
CDC(변경 데이터 캡처)가 사용되도록 설정된 SQL Server 2014 (12.x) 또는 이전 인스턴스에서 데이터베이스를 연결하는 경우 다음 명령을 실행하여 CDC(변경 데이터 캡처) 메타데이터를 업그레이드해야 합니다.
USE <database name>
EXEC sys.sp_cdc_vupgrade
자세한 내용은 CDC 사용 데이터베이스를 Windows SQL Server 2016 또는 SQL Server 2017의 인스턴스에 연결할 때 발생하는 오류를 참조하세요.
참고 항목
- 데이터베이스 분리 및 연결(SQL Server)
- 데이터베이스 분리
- CREATE DATABASE(SQL Server Transact-SQL)
- 데이터베이스 엔진 액세스에 대한 파일 시스템 사용 권한 구성