SQL 프로젝트용 도구는 여러 개발 환경 및 명령줄 인터페이스에서 사용할 수 있습니다. SQL 프로젝트의 기본 도구는 SqlPackage 명령줄 유틸리티, Visual Studio의 SSDT( SQL Server Data Tools ) 및 Visual Studio Code용 SQL Database 프로젝트 확장 입니다.
이 문서에 포함된 도구:
그래픽 도구
이러한 도구는 SQL 프로젝트, T-SQL 편집기 및 빌드 및 게시 프로세스에 대한 그래픽 인터페이스를 제공합니다.
SQL Database Projects 확장 은 VS Code의 확장입니다. 이 확장은 SQL 프로젝트, T-SQL 편집기 및 빌드 및 게시 프로세스에 대한 그래픽 인터페이스를 제공합니다. 확장은 동일한 기능을 사용하여 Azure Data Studio 에서도 사용할 수 있습니다.
SSDT(SQL Server Data Tools)는 SQL 프로젝트에 대한 그래픽 인터페이스를 제공하는 Visual Studio 구성 요소입니다. SSDT는 테이블용 비주얼 디자이너, T-SQL 편집기 및 빌드 및 게시 프로세스를 제공합니다.
기능 세트 비교
| 기능 | VS Code | SSDT(VS2022-2026) | SDK 스타일 SSDT, 미리 보기(VS2022) |
|---|---|---|---|
| 새로운 빈 프로젝트 만들기 | Yes | Yes | Yes |
| 기존 데이터베이스에서 새 프로젝트 만들기 | Yes | Yes | Yes |
| 기존 Microsoft.Build.Sql 프로젝트 열기 | Yes | 아니오 | Yes |
| 솔루션 관리 및 운영 | 아니오 | Yes | Yes |
| 프로젝트 실행 빌드 | Yes | Yes | Yes |
| 기존 서버에 프로젝트 게시 | Yes | Yes | Yes |
| 로컬 개발 인스턴스에 프로젝트 게시 | 예1 | 예2 | 예2 |
| 게시 옵션/속성 | Yes | Yes | Yes |
| 대상 플랫폼 업데이트 가능 | Yes | Yes | Yes |
| SQLCMD 변수 | Yes | Yes | Yes |
| 프로젝트 참조 | Yes | Yes | Yes |
| Dacpac 참조 | Yes | Yes | Yes |
| 패키지 참조 | Yes | 아니오 | 아니오 |
| 게시용 프로필 생성 | Yes | Yes | Yes |
| 프로젝트 폴더에 배치하여 SQL 파일을 추가할 수 있음 | Yes | 아니오 | Yes |
| 빌드에서 SQL 파일을 제외할 수 있음 | Yes | Yes | 아니오 |
| 배포 전 및 배포 후 스크립트 | Yes | Yes | Yes |
| 새 개체 템플릿 | 예3 | Yes | 예3 |
| 프로젝트 파일을 폴더로 구성할 수 있음 | Yes | Yes | Yes |
| 스키마 비교 프로젝트를 데이터베이스와 비교하기 | Yes | Yes | Yes |
| 스키마 비교 프로젝트에 대한 데이터베이스 | Yes | Yes | 아니오 |
| 그래픽 테이블 디자이너 | 아니오 | Yes | Yes |
| 코드 분석 – 규칙 GUI 사용/사용 안 함 | 아니오 | Yes | 아니오 |
| 프로젝트 속성 – 빌드 출력 설정 | 아니오 | Yes | Yes |
| 프로젝트 속성 – 데이터베이스 설정 GUI | 아니오 | Yes | 아니오 |
| 프로젝트 실행 코드 분석 | Yes | Yes | 아니오 |
| 개체 이름 바꾸기 및 리팩터링 | 아니오 | Yes | 아니오 |
| 프로젝트 모델에서 데이터베이스 파일에 제공된 Intellisense | 아니오 | Yes | 아니오 |
- 로컬 개발 인스턴스는 SQL Server 컨테이너입니다.
- 로컬 개발 인스턴스는 SQL Server LocalDB 인스턴스입니다.
- 사용 가능한 템플릿의 제한된 하위 집합
명령줄 도구.
SqlPackage는 DacFx 라이브러리의 기본 명령줄 유틸리티로, 데이터베이스에 .dacpac를 배포하거나 데이터베이스 개체를 SQL 프로젝트 또는 .dacpac에 추출하는 등의 데이터베이스 개발 작업을 자동화할 수 있습니다.
DacFx .NET 라이브러리를 사용하여 사용자 지정 콘솔 애플리케이션을 빌드하여 데이터베이스 개발 작업을 자동화할 수 있습니다. Microsoft.SqlServer.Dac 네임스페이스에는 데이터베이스 개체 만들기, 배포 및 추출을 위한 클래스가 포함되어 있으며 DacFx 라이브러리의 나머지 부분에 기본이 됩니다.
CI/CD 파이프라인은 명령줄 실행 또는 .dacpac 및 SQL 프로젝트 배포에 특정한 작업으로 구축할 수 있습니다.
GitHub sql-action 및 Azure DevOps의 SqlAzureDacpacDeployment는 관리 계층 아래에서 SqlPackage를 사용하여 데이터베이스 변경 내용을 쉽게 배포하는 작업의 예입니다.
변환 도구
기존 SQL 프로젝트를 SDK 스타일 프로젝트로 변환하는 프로세스는 새 SDK 스타일 프로젝트 형식을 포함하도록 파일을 수동으로 편집 .sqlproj 하여 수행됩니다. 프로세스를 시작하기 전에 프로젝트 파일을 백업하고 프로젝트의 .dacpac 버전을 보관하는 것이 좋습니다. 프로젝트에서 빌드된 "before" 및 "after" .dacpac 를 비교하여 변환 프로세스가 올바르게 완료되었는지 확인할 수 있습니다.
프로젝트/솔루션 관리
여러 SQL 프로젝트(및 기타 프로젝트)를 솔루션 파일에서 논리적으로 그룹화할 수 있습니다. 솔루션 파일은 하나 이상의 프로젝트에 대한 컨테이너이며 빌드 작업을 포함하여 프로젝트를 그룹으로 관리하는 데 사용됩니다. 대규모 솔루션을 더 작은 솔루션으로 세분화하여 성능 및 관리 효율성을 개선하거나 적절한 작업에 대해 동적으로 생성할 수 있습니다. slngen 솔루션 파일 생성기는 Microsoft.Build.Sql 프로젝트에 사용할 수 있으며 프로그래밍 방식 및 주문형 프로젝트 집합에 대한 솔루션 파일을 만드는 데 사용할 수 있습니다.
타사 도구
SQL 프로젝트 및 데이터베이스 배포와 관련된 기능을 제공하는 타사 도구를 사용할 수 있습니다. dbatools와 같은 일부 도구는 오픈 소스입니다.
개발자는 코드 분석 규칙 및 배포 계획 사용자 지정을 포함하여 SQL 프로젝트와 관련된 확장성 지점을 활용하는 프로젝트를 공유했습니다. 이러한 프로젝트 중 일부는 다음과 같습니다.
- https://github.com/tcartwright/SqlServer.Rules
- https://github.com/davebally/TSQL-Smells
- https://github.com/ErikEJ/SqlServer.Rules
- https://github.com/GoEddie/DeploymentContributorFilterer