데이터베이스 스크립트 만들기 및 수정
데이터베이스 스크립트는 데이터베이스 스키마 정의의 일부가 아닌 Transact-SQL 문이나 SQLCMD와 같은 유틸리티를 포함하는 추가 파일입니다. 배포 단계의 일부(배포 전 스크립트 및 배포 후 스크립트)로 데이터베이스 스크립트를 사용하거나 데이터베이스 프로젝트에 일반 관리 스크립트를 저장할 수 있습니다.
데이터베이스 개체의 이름을 바꿀 경우 데이터베이스 리팩터링을 사용하여 스크립트에서 해당 개체에 대한 모든 참조를 자동으로 업데이트할 수 있습니다.
배포 스크립트
데이터베이스 프로젝트를 빌드할 경우 배포 전 스크립트, 데이터베이스 개체 정의 및 배포 후 스크립트가 하나의 데이터베이스 스키마 파일(.dbschema)로 컴파일됩니다. 배포 전 스크립트와 배포 후 스크립트를 각각 하나씩만 지정할 수 있지만 SQLCMD를 사용하면 이러한 스크립트 내에서 다른 스크립트를 포함할 수도 있습니다. 자세한 내용은 배포 전 또는 배포 후 단계에 여러 스크립트 포함을 참조하십시오. 데이터베이스 프로젝트를 빌드할 경우 포함된 모든 스크립트가 빌드 스크립트에 병합됩니다.
기본적으로 데이터베이스 프로젝트에는 빈 배포 전 스크립트와 빈 배포 후 스크립트가 포함되어 있습니다. 이러한 스크립트의 이름은 script.predeployment.sql과 script.postdeployment.sql입니다.
스크립트 파일의 빌드 작업 속성을 PreDeploy로 설정하여 배포 전 스크립트를 지정합니다. 마찬가지로 스크립트 파일의 빌드 작업 속성을 PostDeploy로 설정하여 배포 후 스크립트를 지정합니다. 스크립트를 배포 전 또는 배포 후 스크립트로 지정한 다음 동일한 방법으로 다른 스크립트를 지정하면 첫 번째 스크립트의 빌드 작업은 "빌드에 없음"으로 자동 설정됩니다. 각 데이터베이스 프로젝트에는 배포 전 스크립트와 배포 후 스크립트가 하나씩만 있을 수 있으므로 이러한 동작은 의도된 것입니다.
중요
배포 스크립트에서 참조하는 개체의 이름이나 특징을 변경하고 스크립트에서 해당 참조를 업데이트하지 않으면 배포가 실패할 수 있습니다. 예를 들어 배포 후 스크립트에서 테이블에 데이터를 삽입할 수 있습니다. 이 경우 테이블의 이름을 바꾸고 스크립트를 업데이트하지 않으면 INSERT 문이 실패합니다. 이름 바꾸기 리팩터링을 사용하여 테이블의 이름을 바꾸면 배포 스크립트가 업데이트됩니다.
배포 전 또는 배포 후 단계에 여러 스크립트 포함
배포 전 또는 배포 후 단계에서 여러 스크립트를 사용하려면 다음 문을 사용하여 다른 배포 전 또는 배포 후 스크립트를 포함하는 최상위 수준의 스크립트를 지정해야 합니다.
SQLCMD :r .\FileName.sql
추가 스크립트
배포 스크립트 외에도 일반 용도의 다른 스크립트를 데이터베이스 프로젝트에 추가할 수 있습니다. 데이터베이스 프로젝트의 스크립트 폴더에 하위 폴더를 추가하여 이러한 추가 스크립트를 구성할 수 있습니다. Transact-SQL 편집기에서 이러한 추가 스크립트 중 하나를 열면 데이터베이스 서버에 연결하고 해당 스크립트 전체 또는 일부를 실행할 수 있습니다. 루틴 감사 스크립트를 실행하는 경우 이 방법을 사용하면 간편하게 각 스크립트를 연결된 데이터베이스와 함께 유지할 수 있으며, 데이터베이스 스키마와 동일한 버전 제어 시스템에 스크립트와 데이터베이스를 모두 배치할 수도 있습니다. 이러한 스크립트의 빌드 작업 속성은 빌드에 없음으로 설정됩니다.
일반 작업
다음 표에서는 이 시나리오를 지원하는 일반적인 작업에 대한 설명과 해당 작업을 성공적으로 완료하는 방법에 대한 자세한 내용을 볼 수 있는 링크를 보여 줍니다.
Task |
지원 내용 |
---|---|
배포 전 또는 배포 후 스크립트 지정: 데이터베이스를 배포하기 전이나 후에 실행되는 스크립트에 Transact-SQL 문을 추가할 수 있습니다. 데이터베이스의 개체와 설정을 가져올 경우 사용 권한, 역할 정의 또는 시그니처와 같이 데이터베이스 개체로 표현되지 않는 문으로 배포 스크립트가 업데이트될 수 있습니다. |
|
관리 또는 유틸리티 스크립트 지정: 데이터베이스 프로젝트에 관리 및 유틸리티 스크립트를 추가할 수 있습니다. 데이터베이스 프로젝트의 개체를 리팩터링할 때 스크립트를 업데이트할 수도 있습니다. |
|
변경 내용 체크 인: 스크립트를 버전 제어에 체크 인하여 팀과 공유할 수 있습니다. 스크립트를 버전 제어에서 관리하면 이전 버전의 데이터베이스를 제공해야 하는 경우 해당 버전과 일치하는 배포 및 유지 관리 스크립트를 저장하고 검색할 수 있습니다. |
|
문제 해결: 데이터베이스 및 서버 프로젝트와 관련된 일반적인 문제를 해결하는 방법에 대해 알아보십시오. |
관련 시나리오
데이터베이스 개체와 서버 개체 만들기 및 수정
프로젝트의 개체 정의를 수정하고 해당 변경 내용을 대상 데이터베이스 또는 서버에 배포할 경우 데이터베이스나 서버를 업데이트합니다.데이터베이스 코드 및 데이터 리팩터링
데이터베이스 리팩터링을 사용하여 개체에 대한 모든 참조 이름을 바꾸거나, 정규화된 이름을 지정하거나, 와일드카드 문자를 확장하거나, 새 스키마로 개체를 이동하는 등 반복적이고 오류가 발생하기 쉬운 작업을 줄일 수 있습니다.데이터베이스를 빌드하여 격리된 개발 환경에 배포
프로젝트의 개체를 수정한 후 변경 내용을 빌드하고 격리된 개발 환경에 배포합니다.데이터베이스 코드를 분석하여 코드 품질 향상
데이터베이스 코드를 분석하여 일반적인 디자인, 명명 및 성능 문제를 찾고 해결할 수 있습니다.