sql-server-2025 について
SQL Serverの開発者や運用担当者向けに、SQL Server 2025、SqlPackage、データベースプロジェクトを扱うリファレンスです。バージョン状況、データ型、デプロイ、テスト、CI/CDの情報をまとめています。
主な機能
- 01SQL Server 2025の機能と状況
- 02SqlPackageの公開・診断コマンド
- 03VECTORとJSONのデータ型
- 04データベースプロジェクトとScriptDomの対応
- 05CI/CDのテストとデプロイ指針
- 06Fabricデータウェアハウスへのデプロイ例
活用シーン
- 01SQL Server 2025のアップグレードや機能の評価
- 02SqlPackageを使ったデータベースプロジェクトの公開
- 03データベースデプロイ向けCI/CDの計画
- 04SQL 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 年の主なリリースは 3 つです:
- 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 Blob Storage を使用する Azure SQL Database の Parquet ファイルをサポート
- CLR 型および 1 MB を超える LOB では BCP に自動的にフォールバック
新しいデータ型:
- VECTOR - 半精度(2 バイト)浮動小数点数による最大 3,996 次元
- JSON - Azure SQL Database のネイティブ JSON データ型
新しい権限(170.0 以降):
ALTER ANY INFORMATION PROTECTION- SQL Server 2025 および Azure SQLALTER ANY EXTERNAL MIRROR- Azure SQL および Fabric の SQL データベースCREATE/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 のサポート
現在の状況: SQL Server 2025 のターゲットプラットフォームのサポートは、今後の Microsoft.Build.Sql リリース(2.0.0 以降)で追加される予定です。
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 Data Warehouse のサポート
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');