关于 sql-server-2025
面向 SQL Server 数据库开发和运维人员,汇总 SQL Server 2025、SqlPackage 与数据库项目的功能和部署实践。内容涉及版本状态、数据类型、发布、测试及 CI/CD。
主要功能
- 01SQL Server 2025 功能与版本信息
- 02SqlPackage 发布和诊断命令
- 03VECTOR 与 JSON 数据类型
- 04数据库项目与 ScriptDom 支持
- 05CI/CD 测试和部署建议
- 06Fabric 数据仓库部署示例
适用场景
- 01评估 SQL Server 2025 升级与功能
- 02使用 SqlPackage 发布数据库项目
- 03为数据库部署设计 CI/CD 流程
- 04解析 SQL Server 2025 语法
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ josiahsiegel/ claude-plugin-marketplace --skill sql-server-2025安装后在 Claude Code 中输入/sql-server-2025确认已加载。
附带文件references/sql-server-2025-features.md
详细介绍
🚨 关键指南
Windows 文件路径要求
强制要求:在 Windows 上始终使用反斜杠表示文件路径
在 Windows 上使用 Edit 或 Write 工具时,文件路径必须使用反斜杠(\),而不是正斜杠(/)。
示例:
- ❌ 错误:
D:/repos/project/file.tsx - ✅ 正确:
D:\repos\project\file.tsx
适用于:
- Edit 工具的 file_path 参数
- Write 工具的 file_path 参数
- Windows 系统上的所有文件操作
文档指南
除非用户明确要求,否则绝不创建新的文档文件。
- 优先事项:更新现有的 README.md 文件,而不是创建新的文档
- 保持仓库整洁:保持仓库根目录整洁——除非用户另有要求,否则只保留 README.md
- 风格:文档应简洁、直接且专业,避免使用 AI 生成式语气
- 用户偏好:只有用户明确要求提供文档时,才创建额外的 .md 文件
SQL Server 2025 和 SqlPackage 170.2.70 支持
概述
SQL Server 2025 是一款面向企业且为 AI 做好准备的数据库,具备原生向量数据库功能、内置 AI 模型集成,以及从本地到云端的语义搜索能力。
SqlPackage 170.2.70(2025 年 10 月 14 日)——最新的正式版,全面支持 SQL Server 2025、数据虚拟化和 Parquet 文件增强功能。
SqlPackage 170.x 系列(2025 年发布)
最新版本:170.2.70(2025 年 10 月 14 日)
2025 年发布的三个主要版本:
- 170.2.70 - 2025 年 10 月 14 日(当前版本)
- 170.1.61 - 2025 年 7 月 30 日(数据虚拟化)
- 170.0.94 - 2025 年 4 月 15 日(初步支持 SQL Server 2025)
2025 年主要功能
数据虚拟化(170.1.61+):
- 支持 Azure SQL Database 数据虚拟化对象
- 支持对外部数据源执行导入、导出、提取和发布操作
- 支持 Azure SQL Database 使用 Azure Blob Storage 中的 Parquet 文件
- 对 CLR 类型和大于 1 MB 的 LOB 自动回退到 BCP
新数据类型:
- VECTOR - 最多支持 3,996 个维度,使用半精度(2 字节)浮点数
- JSON - Azure SQL Database 的原生 JSON 数据类型
新增权限(170.0+):
ALTER ANY INFORMATION PROTECTION- SQL Server 2025 和 Azure SQLALTER ANY EXTERNAL MIRROR- Azure SQL 和 Fabric 中的 SQL databaseCREATE/ALTER ANY EXTERNAL MODEL- AI/ML 模型管理
部署选项:
/p:IgnorePreDeployScript=True/False- 跳过预部署脚本/p:IgnorePostDeployScript=True/False- 跳过部署后脚本
SqlPackage 命令
# Publish to SQL Server 2025
sqlpackage /Action:Publish \
/SourceFile:Database.dacpac \
/TargetServerName:server2025.database.windows.net \
/TargetDatabaseName:MyDatabase \
/TargetDatabaseEdition:Premium \
/p:TargetPlatform=SqlServer2025 # New target platform
# Extract from SQL Server 2025
sqlpackage /Action:Extract \
/SourceServerName:server2025.database.windows.net \
/SourceDatabaseName:MyDatabase \
/TargetFile:Database.dacpac \
/p:ExtractAllTableData=False \
/p:VerifyExtraction=True
# Export with SQL Server 2025 features
sqlpackage /Action:Export \
/SourceServerName:server2025.database.windows.net \
/SourceDatabaseName:MyDatabase \
/TargetFile:Database.bacpac
ScriptDom 版本 170.0.64
用于解析 SQL Server 2025 语法的新版 ScriptDom:
// Package: Microsoft.SqlServer.TransactSql.ScriptDom 170.0.64
using Microsoft.SqlServer.TransactSql.ScriptDom;
// Parse SQL Server 2025 syntax
var parser = new TSql170Parser(true);
IList<ParseError> errors;
var fragment = parser.Parse(new StringReader(sql), out errors);
// Supports SQL Server 2025 new T-SQL features
Microsoft.Build.Sql 2.0.0 GA(2025)
**重大里程碑:**Microsoft.Build.Sql SDK 于 2025 年正式达到通用可用(GA)状态!
最新版本:2.0.0(可用于生产环境)
相较于预览版的重大变更:
- SDK 现已可用于生产环境,建议所有新的数据库项目使用
- 不再处于预览状态
- 全面支持跨平台(Windows/Linux/macOS)
- 需要 .NET 8+(预览版需要 .NET 6+)
SQL Server 2025 支持
**当前状态:**Microsoft.Build.Sql 后续版本(2.0.0 之后)将支持 SQL Server 2025 目标平台。
SDK 风格项目的变通方案:
<Project Sdk="Microsoft.Build.Sql/2.0.0">
<PropertyGroup>
<Name>MyDatabase</Name>
<DSP>Microsoft.Data.Tools.Schema.Sql.Sql160DatabaseSchemaProvider</DSP>
<TargetFramework>net8.0</TargetFramework>
<SqlServerVersion>Sql160</SqlServerVersion>
</PropertyGroup>
<ItemGroup>
<Folder Include="Tables\" />
<Folder Include="Views\" />
<Folder Include="StoredProcedures\" />
</ItemGroup>
</Project>
Visual Studio 2022 支持
**要求:**SDK 风格的 SQL 项目需要 Visual Studio 2022 17.12 或更高版本。
**注意:**不支持与原有 SQL 项目(旧版 SSDT)并行安装。
SQL Server 2025 发布状态
当前状态:截至 2025 年 10 月,SQL Server 2025(17.x)处于**候选发布版(RC1)**阶段。公开预览于 2025 年 5 月开始。
预计正式发布(GA)日期:2025 年 11 月 12 日(根据以往的发布规律推测:SQL Server 2019 于 11 月 4 日发布,SQL Server 2022 于 11 月 16 日发布)。预计将在 Microsoft Ignite 大会上(2025 年 11 月 18 日至 21 日)公布。
尚未用于生产环境:SQL Server 2025 尚未正式发布。目前描述的所有功能仅在 RC 版本中提供,用于测试。
SQL Server 2025 新功能
引擎功能完整目录:原生向量数据库(适用于 AI / RAG 工作负载的 DiskANN 索引)、JSON 增强功能、正则表达式、模糊搜索、更改事件流、安全性和敏感度分类、性能 / 智能查询处理新增功能、T-SQL 改进以及 Always Encrypted 更新,详见 references/sql-server-2025-features.md。规划 2025 升级,或在 SSDT 项目中采用上述任一引擎功能时,请加载该参考文件。
部署到 SQL Server 2025
使用 SqlPackage
# Publish with 2025 features
sqlpackage /Action:Publish \
/SourceFile:Database.dacpac \
/TargetConnectionString:"Server=tcp:server2025.database.windows.net;Database=MyDb;Authentication=ActiveDirectoryManagedIdentity;" \
/p:BlockOnPossibleDataLoss=True \
/p:IncludeCompositeObjects=True \
/p:DropObjectsNotInSource=False \
/p:DoNotDropObjectTypes=Users;RoleMembership \
/p:GenerateSmartDefaults=True \
/DiagnosticsFile:deploy.log
使用 MSBuild
<Project>
<PropertyGroup>
<TargetConnectionString>Server=tcp:server2025.database.windows.net;Database=MyDb;Authentication=ActiveDirectoryManagedIdentity;</TargetConnectionString>
<BlockOnPossibleDataLoss>True</BlockOnPossibleDataLoss>
<TargetDatabaseName>MyDatabase</TargetDatabaseName>
<ProfileVersionNumber>1</ProfileVersionNumber>
</PropertyGroup>
<ItemGroup>
<SqlCmdVariable Include="Environment">
<Value>Production</Value>
</SqlCmdVariable>
</ItemGroup>
</Project>
# Deploy using MSBuild
msbuild Database.sqlproj \
/t:Publish \
/p:PublishProfile=Database.publish.xml \
/p:TargetPlatform=SqlServer2025
2025 年 CI/CD 最佳实践
核心原则
基于状态的部署(推荐):
- 源代码表示数据库的当前状态
- 所有对象(存储过程、表、触发器、视图)均放在单独的 .sql 文件中
- SqlPackage 自动生成增量脚本
- 优先于基于迁移的方法
测试与质量:
- tSQLt - 用于测试 SQL Server 存储过程和函数的单元测试框架
- 测试生成机器可读的结果
- 测试失败时中止流水线并立即发送通知
- 测试失败时绝不继续部署
安全性:
- CI/CD 优先使用 Windows 身份验证(避免使用明文密码)
- 切勿将凭据提交到源代码管理
- 使用 Azure Key Vault 或 GitHub Secrets 存储连接字符串
版本控制:
- 在源代码管理中保存所有数据库对象
- 对测试脚本进行版本控制,并在 Build 步骤中执行
- 要求提交时附带注释
- 配置自定义提交策略
GitHub Actions(2025 模式)
name: Deploy to SQL Server 2025
on:
push:
branches: [main]
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup .NET 8
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.x'
- name: Install SqlPackage 170.2.70
run: dotnet tool install -g Microsoft.SqlPackage --version 170.2.70
- name: Build DACPAC
run: dotnet build Database.sqlproj -c Release
- name: Run tSQLt Unit Tests
run: |
# Run unit tests and capture results
# Abort if tests fail
echo "Running tSQLt unit tests..."
# Add your tSQLt test execution here
- name: Generate Deployment Report
run: |
sqlpackage /Action:DeployReport \
/SourceFile:bin/Release/Database.dacpac \
/TargetConnectionString:"${{ secrets.SQL_CONNECTION_STRING }}" \
/OutputPath:deploy-report.xml \
/p:BlockOnPossibleDataLoss=True
- name: Publish to SQL Server 2025
run: |
sqlpackage /Action:Publish \
/SourceFile:bin/Release/Database.dacpac \
/TargetConnectionString:"${{ secrets.SQL_CONNECTION_STRING }}" \
/p:TargetPlatform=SqlServer2025 \
/p:BlockOnPossibleDataLoss=True \
/DiagnosticsFile:publish.log \
/DiagnosticsLevel:Verbose
- name: Upload Artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: deployment-logs
path: |
publish.log
deploy-report.xml
Azure DevOps
trigger:
- main
pool:
vmImage: 'windows-2022'
steps:
- task: MSBuild@1
displayName: 'Build Database Project'
inputs:
solution: 'Database.sqlproj'
configuration: 'Release'
- task: SqlAzureDacpacDeployment@1
displayName: 'Deploy to SQL Server 2025'
inputs:
azureSubscription: 'Azure Subscription'
authenticationType: 'servicePrincipal'
serverName: 'server2025.database.windows.net'
databaseName: 'MyDatabase'
deployType: 'DacpacTask'
deploymentAction: 'Publish'
dacpacFile: '$(Build.SourcesDirectory)/bin/Release/Database.dacpac'
additionalArguments: '/p:TargetPlatform=SqlServer2025'
SqlPackage 新增诊断功能
# Enable detailed diagnostics
sqlpackage /Action:Publish \
/SourceFile:Database.dacpac \
/TargetServerName:server2025.database.windows.net \
/TargetDatabaseName:MyDatabase \
/DiagnosticsLevel:Verbose \
/DiagnosticPackageFile:diagnostics.zip
# Creates diagnostics.zip containing:
# - Deployment logs
# - Performance metrics
# - Error details
# - Schema comparison results
Microsoft Fabric 数据仓库支持
**SqlPackage 162.5+ 新增:**全面支持 Microsoft Fabric 中的 SQL 数据库。
Fabric 部署:
# Deploy to Fabric Warehouse
sqlpackage /Action:Publish \
/SourceFile:Warehouse.dacpac \
/TargetConnectionString:"Server=tcp:myworkspace.datawarehouse.fabric.microsoft.com;Database=mywarehouse;Authentication=ActiveDirectoryInteractive;" \
/p:DatabaseEdition=Fabric \
/p:DatabaseServiceObjective=SqlDbFabricDatabaseSchemaProvider
# Extract from Fabric
sqlpackage /Action:Extract \
/SourceConnectionString:"Server=tcp:myworkspace.datawarehouse.fabric.microsoft.com;Database=mywarehouse;Authentication=ActiveDirectoryInteractive;" \
/TargetFile:Fabric.dacpac
# New permission: ALTER ANY EXTERNAL MIRROR (Fabric-specific)
GRANT ALTER ANY EXTERNAL MIRROR TO [FabricAdmin];
SQL Server 2025 最佳实践
- 使用目标平台规范:
<PropertyGroup>
<TargetPlatform>SqlServer2025</TargetPlatform>
</PropertyGroup>
- 测试向量操作:
-- Verify vector support
SELECT SERVERPROPERTY('IsVectorSupported') AS VectorSupport;
- 监控 AI 模型性能:
-- Track model execution
SELECT
model_name,
AVG(execution_time_ms) AS AvgExecutionTime,
COUNT(*) AS ExecutionCount
FROM sys.dm_exec_external_model_stats
GROUP BY model_name;
- 实施敏感度分类:
-- Classify all PII columns
ADD SENSITIVITY CLASSIFICATION TO dbo.Customers.Email
WITH (LABEL = 'Confidential - GDPR', INFORMATION_TYPE = 'Email');