SQL 專案工具
SQL 專案的工具可在數個開發環境和命令列介面使用。 SQL 專案的主要工具是 SqlPackage 命令列公用程式、Visual Studio 中的 SQL Server Data Tools (SSDT),以及適用於 Azure Data Studio 和 Visual Studio Code 的 SQL 資料庫專案延伸項目。
圖形工具
這些工具提供 SQL 專案的圖形化介面、T-SQL 編輯器,以及組建和發佈流程。
SQL Server Data Tools (SSDT) 是 Visual Studio 元件,可提供 SQL 專案的圖形化介面。 SSDT 提供資料表、T-SQL 編輯器,以及建置和發佈程式的視覺化設計工具。
SQL 資料庫專案延伸項目是 Azure Data Studio (ADS) 和 VS Code 的延伸項目。 此延伸模組提供 SQL 專案的圖形化介面、T-SQL 編輯器,以及建置和發佈程序。
功能組比較
功能 | SDK 樣式 SSDT | SSDT | ADS | VS Code |
---|---|---|---|---|
建立新的空專案 | X | X | X | X |
從現有的資料庫建立新專案 | X | X | X | |
開啟現有的 Microsoft.Build.Sql 專案 | X1 | X | X | |
解決方案管理和作業 | X | X | ||
專案執行組建 | X | X | X | X |
發佈專案到現有的伺服器 | X | X | X | X |
將專案發佈至本機開發執行個體 | X2 | X2 | X3 | X3 |
發佈選項/屬性 | X | X | X | |
目標平台可以更新 | X | X | X | X |
SQLCMD 變數 | X | X | X | X |
專案參考 | X | X | ||
Dacpac 參考 | X | X | X | |
套件參考 | X | |||
發行設定檔建立 | X | X | X | |
SQL 檔案放在專案資料夾即可新增 | X | X | X | |
SQL 檔案可以從組建排除 | X | X | ||
部署前/部署後指令 | X | X | X | X |
新物件範本 | X4 | X | X4 | X4 |
專案檔可以整理成資料夾 | X | X | X | X |
結構描述比較專案與資料庫 | X | X | ||
結構描述比較資料庫與專案 | X | X | ||
圖形化資料表設計工具 | X | X | ||
Code Analysis – 啟用/停用規則 | X | |||
專案屬性 – 組建輸出設定 | X | X | ||
專案屬性 – 預設結構描述 | X | |||
專案屬性 – 資料庫設定 | X | |||
專案獨立執行 Code Analysis | X | |||
物件重新命名和重構 | X | |||
專案模型資料庫檔案提供的 Intellisense | X | |||
SQL Server 物件總管連線性/檢視物件 | X | X | X | X |
SQL Server 物件總管操作功能表項目 | X | X | X | |
SQL Server 查詢編輯器連線性 | X | X | X |
- 在 Visual Studio 2022 預覽版,SDK 樣式的專案使用
.sqlprojx
延伸項目而不是.sqlproj
。 - 本機開發執行個體是 SQL Server LocalDB 執行個體。
- 本機開發執行個體是 SQL Server 容器。
- 可用的範本子集有限
命令列工具
SqlPackage 是 DacFx 程式庫的主要命令列公用程式,可讓您自動化資料庫開發工作單位,例如將 .dacpac
部署至資料庫,或將資料庫的物件擷取至 SQL 專案或 .dacpac
。
您可以使用 DacFx .NET 程式庫建置自訂主控台應用程式,將資料庫開發工作自動化。 Microsoft.SqlServer.Dac 命名空間包含用來建立、部署及擷取資料庫物件的類別,而且是其餘 DacFx 程式庫的基礎。
CI/CD 管線可以使用命令列執行,或是使用 .dacpac
特定工作與 SQL 專案部署建置。 GitHub sql-action 和 Azure DevOps 中的SqlAzureDacpacDeployment,是使用管理層底下之 SqlPackage 輔助部署資料庫變更的工作範例。
協力廠商工具
有第三方工具提供與 SQL 專案和資料庫部署相關的功能。 有些工具是開放原始碼,例如 dbatools。
開發人員已使用 SQL 專案周圍的擴充點共用專案,包括 Code Analysis 規則和自訂部署計劃。 其中一些專案包括:
- https://github.com/tcartwright/SqlServer.Rules
- https://github.com/davebally/TSQL-Smells
- https://github.com/GoEddie/DeploymentContributorFilterer