배포 전 및 배포 후 스크립트 개요
적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance
배포 전 및 배포 후 스크립트는 배포 중에 실행할 프로젝트에 포함된 SQL 스크립트입니다. 배포 전/후 스크립트는 .dacpac
에 포함되지만 데이터베이스 개체 모델로 컴파일되거나 유효성이 검사되지 않습니다. 배포 계획이 실행되기 전에 배포 전 스크립트가 실행되지만 스크립트가 실행되기 전에 배포 계획이 계산됩니다. 배포 후 스크립트는 배포 계획이 완료된 후에 실행됩니다.
SQL 프로젝트 파일 샘플 및 구문
SQL 프로젝트 파일에는 단일 배포 전 스크립트와 단일 배포 후 스크립트가 지정될 수 있습니다.
SQL 프로젝트 파일의 다음 예제에서는 배포 전 스크립트로 prep-db.sql
파일을 추가합니다.
...
<ItemGroup>
<PreDeploy Include="prep-db.sql" />
</ItemGroup>
SQL 프로젝트 파일의 다음 예제에서는 배포 후 스크립트로 populate-app-settings.sql
파일을 추가합니다.
...
<ItemGroup>
<PostDeploy Include="populate-app-settings.sql" />
</ItemGroup>
</Project>
각 파일을 순서대로 호출하는 SQLCMD 스크립트를 사용하여 배포 전 또는 배포 후 스크립트의 일부로 여러 파일을 실행할 수 있습니다.
:r .\scripts\script1.sql
:r .\scripts\script2.sql
이러한 파일은 Visual Studio의 파일 속성 Build Action
에 None
속성을 설정하거나 .sqlproj
특성이 Build
(으)로 설정된 None
파일의 파일 입력을 추가하여 데이터베이스 모델 빌드에서 제외되어야 합니다.
...
<ItemGroup>
<Build Remove="scripts\script1.sql" />
<Build Remove="scripts\script2.sql" />
</ItemGroup>
</Project>
배포 전 및 배포 후 스크립트 추가
솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 추가>스크립트를 선택합니다. 배포 전 스크립트 또는 배포 후 스크립트를 선택합니다.
스크립트 파일이 프로젝트에 추가되고 쿼리 편집기에서 열립니다. 여기서 스크립트를 완료할 수 있습니다. 이 스크립트는 프로젝트가 배포될 때마다 배포 계획이 실행되기 전이나 후에 실행됩니다.
솔루션 탐색기에서 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 추가, 새 항목을 선택합니다. 새 항목 추가 대화 상자가 나타나고 모든 템플릿 표시를 선택합니다. 그런 다음 테이블을 선택합니다. 배포 전 스크립트 또는 배포 후 스크립트를 선택합니다.
스크립트 파일이 프로젝트에 추가되고 쿼리 편집기에서 열립니다. 여기서 스크립트를 완료할 수 있습니다. 이 스크립트는 프로젝트가 배포될 때마다 배포 계획이 실행되기 전이나 후에 실행됩니다.
VS Code 또는 Azure Data Studio의 데이터베이스 프로젝트 보기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 배포 전 스크립트 추가 또는 배포 후 스크립트 추가를 선택합니다. 파일 확장명 없이 스크립트 이름을 제공합니다.
스크립트 파일이 프로젝트에 추가되고 쿼리 편집기에서 열립니다. 여기서 스크립트를 완료할 수 있습니다. 이 스크립트는 프로젝트가 배포될 때마다 배포 계획이 실행되기 전이나 후에 실행됩니다.
.sqlproj
파일을 직접 편집하여 배포 전 또는 배포 후 스크립트를 추가합니다. <ItemGroup>
파일의 .sqlproj
섹션에 <PreDeploy>
또는 <PostDeploy>
항목을 추가합니다.
예를 들어 프로젝트에 스크립트 scripts\before-script.sql
을(를) 배포 전 스크립트로 추가하려면 다음을 수행합니다.
...
<ItemGroup>
<PreDeploy Include="scripts\before-script.sql" />
</ItemGroup>
이 스크립트 scripts\before-script.sql
은(는) 프로젝트가 배포될 때마다 배포 계획이 실행되기 전에 실행됩니다.