SQL 프로젝트에 기존 파일 추가
적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance
개념적으로 SQL 프로젝트가 만들어지면 개체를 한 번에 하나씩 또는 대량으로 추가할 수 있습니다. 개체를 한 번에 하나씩 추가하는 것은 간단하며, 개체를 대량으로 추가하는 것은 .dacpac
파일의 내용 또는 하나 이상의 SQL 스크립트에서 수행할 수 있습니다. 이 문서에서는 Dacpac 또는 SQL 스크립트의 내용을 SQL 프로젝트에 추가하는 방법과 소스 간의 트레이드오프에 대해 설명합니다.
.dacpac
파일에서 가져오기
.dacpac
파일은 컴파일된 데이터베이스 모델이며 파일을 읽고 적용하려면 특정 도구가 필요합니다. .dacpac
파일을 SQL 프로젝트 빌드 아티팩트 또는 기존 데이터베이스에서 생성할 수 있으며 원본에 액세스할 수 없는 파일이 제공될 수 있습니다. 데이터베이스에 .dacpac
를 적용할 수 있는 많은 도구 외에도 Visual Studio의 SQL Server 데이터 도구(SSDT)를 사용하면 .dacpac
파일의 내용을 프로젝트로 직접 가져올 수 있습니다. 데이터베이스 또는 .dacpac 파일에서 스키마를 가져오는 기능은 프로젝트에 이미 정의된 스키마 개체가 없는 경우에만 사용할 수 있습니다.
가져올 때 개체 정의는 새 개체에 대한 SSDT의 조직 기본값을 사용하여 프로젝트 파일로 스크립트되며, 새 개체는 최상위 개체에 대한 새 파일, 부모 파일과 동일한 파일에 정의된 계층적 자식, 가능한 경우 인라인으로 정의된 테이블/열 제약 조건을 말합니다. 각 개체에 대한 더 많은 대상 표시 여부 및 제어를 위해 가져오기 대신 스키마 비교를 사용합니다. 가져오기 원본에 배포 전 및 배포 후 스크립트, RefactorLog 또는 SQLCMD 변수 정의가 포함되어 있는 경우 프로젝트로 가져올 수 있습니다. 프로젝트에 이러한 아티팩트 중 하나라도 이미 포함되어 있을 경우 가져온 파일은 프로젝트의 가져오기 시 무시됨 폴더에 추가됩니다.
Visual Studio 및 SQL Server Data Tools를 사용할 수 없는 경우 다음 중 하나를 수행할 수 있습니다.
- Azure Data Studio에서 스키마 비교 확장을 사용하여
.dacpac
파일의 내용을 프로젝트와 비교한 다음 변경 사항을 프로젝트에 선택적으로 적용합니다. - SqlPackage 명령줄 유틸리티를 사용하여
.dacpac
파일의 내용을 데이터베이스로 가져온 다음 데이터베이스에서 프로젝트를 만듭니다.
SQL 스크립트에서 가져오기
T-SQL 스크립트는 프로젝트 디렉터리에 스크립트 파일을 추가하거나 Visual Studio에서 스크립트의 내용을 처리하는 두 가지 방법으로 SQL 프로젝트로 가져올 수 있습니다. 선택하는 방법은 프로젝트 형식 및 가져오기 프로세스에 대한 원하는 제어 수준에 따라 달라집니다. 두 경우 모두 스크립트 파일의 구문이 유효해야 합니다.
프로젝트에 파일 추가
SDK 스타일 SQL 프로젝트의 경우 Microsoft.Build.Sql이 프로젝트에 모든 *.sql
파일을 자동으로 포함하므로 기존 SQL 스크립트를 프로젝트 디렉터리에 배치하여 프로젝트에 추가할 수 있습니다. SDK 스타일이 아닌 프로젝트를 사용하는 경우 Visual Studio의 스크립트 처리를 활용하여 기존 SQL 스크립트를 프로젝트로 가져와야 합니다. 프로젝트에 자동으로 포함된 *.sql
파일은 데이터베이스 모델 빌드에 SQL 개체로 포함됩니다.
프로젝트에 이미 있는 개체에 대한 중복된 개체 정의가 포함된 파일을 프로젝트 폴더에 추가하면 프로젝트 빌드가 실패합니다. 중복 개체를 제거하거나 개체 중 하나의 이름을 변경하여 충돌을 수동으로 해결해야 합니다.
배포 전/후 스크립트로 프로젝트에 파일을 추가하려면 프로젝트 디렉터리에 파일을 추가하는 것 외에도 프로젝트 파일에 파일을 포함해야 합니다. 예를 들어 Pre-DeploymentScript.sql
라는 파일을 사전 배포 스크립트로 추가하려면 프로젝트 파일에 다음을 추가합니다.
<ItemGroup>
<PreDeploy Include="Pre-DeploymentScript.sql" />
</ItemGroup>
배포 전/후 스크립트에 대한 자세한 내용은 SQL 프로젝트 설명서에서 확인할 수 있습니다.
파일의 콘텐츠 처리
Visual Studio의 SSDT(SQL Server Data Tools)에는 원본 스타일의 프로젝트에 추가하면서 SQL 스크립트의 내용을 처리하는 기능도 있습니다. 이 처리 중에 스크립트에 프로젝트에 이미 정의된 개체가 포함된 경우 개체의 정의가 스크립트와 일치하도록 업데이트됩니다. 스크립트에 프로젝트에 아직 정의되지 않은 개체가 포함되어 있으면 개체에 대한 새 파일이 만들어집니다.
스크립트 처리로 인해 중복 제약 조건 및 암호화 키 문이 발생할 수 있는 알려진 문제가 있습니다. 이러한 문제가 발생하면 빌드 출력 창을 활용하여 중복 항목의 원본을 식별하고 프로젝트에서 수동으로 제거합니다.
스크립트에서 가져오기 프로세스에는 배포 전/배포 후 스크립트, SQLCMD 변수 또는 RefactorLog 파일이 통합되지 않습니다. 가져오기 시 검색된 이러한 구문과 지원되지 않는 다른 구문은 프로젝트의 Scripts 폴더에 있는 ScriptsIgnoredOnImport.sql 파일에 배치됩니다.