ツールと統合サービスを使用して開発者の生産性を向上させる
SQL Server 2025 には、開発者がデータ、イベント、API を操作するための機能とツールが用意されています。 このユニットでは、SQL Server 2025 の開発機能について説明します。
データ エンリッチメント機能を実装する
SQL Server 2025 では、いくつかの重要な機能を使用してデータ エンリッチメント機能が大幅に向上します。
ネイティブ JSON の操作
SQL Server 2025 では、ネイティブ JSON のサポートが強化されており、T-SQL で JSON を直接格納、クエリ、操作できます。
JSON_OBJECTやJSON_VALUEなどの新しい関数を使用すると、半構造化データの操作が簡略化されますが、インデックス作成が強化されると、JSON クエリのパフォーマンスが向上します。 これにより、リレーショナル データと階層データを最新のアプリケーションで簡単にブレンドできます。
JSON SQL Server でのサポートにより、JSON データをネイティブに格納して操作できます。
- SQL Serverで JSON ドキュメントを直接処理する
- T-SQL を使用した JSON のクエリと更新
- パフォーマンスを向上させるために JSON プロパティのインデックスを作成する
- データベース レベルで JSON を検証する
- 厳密な型の適用に JSON データ型を使用する
次の例は、SQL Server 2025 が自動検証とドット表記を使用して新しい JSON データ型を使用する方法を示しています。これにより、JSON を列に格納し、名前や価格などのプロパティを追加の関数なしで T-SQL に直接クエリできます。
-- Create a table with a JSON column
CREATE TABLE Products (
ProductId int PRIMARY KEY,
ProductData JSON
);
-- Insert valid JSON data with automatic validation
INSERT INTO Products (ProductId, ProductData)
VALUES (1, '{"name": "Widget", "price": 19.99, "features": ["durable", "lightweight"]}');
-- Query JSON properties using dot notation
SELECT
ProductId,
ProductData.name,
ProductData.price
FROM Products;
ヒント
ISJSON()関数を使用して、JSON データをデータベースに格納する前に検証します。
REST API の統合
SQL Server 2025 では、組み込みの REST API サポートが導入されており、追加のミドルウェアなしで HTTP 経由でデータベース オブジェクトと直接やり取りできます。 開発者は、テーブル、ビュー、ストアド プロシージャを RESTful エンドポイントとして公開できるため、SQL Serverを最新の Web アプリケーションやモバイル アプリケーションと簡単に統合できます。 この機能では、セキュリティで保護された認証、入力と出力の JSON ペイロード、および公開される操作をきめ細かく制御できます。 これにより、SQL Serverをバックエンドとして使用する軽量のサービスとマイクロサービスの構築が簡素化され、開発のオーバーヘッドが削減されます。
REST API 操作はデータベース内で実行され、セキュリティが向上し、外部の依存関係が減ります。
| 特徴 | [説明] | ユース ケースの例 |
|---|---|---|
| API 統合 | T-SQL から外部 API を呼び出す | Microsoft 以外のサービスを使用してデータを強化する |
| API 認証 | マネージド ID を使用して API 呼び出しをセキュリティで保護する | Azure サービスに安全に接続する |
| 応答処理 | JSON/XML 応答をネイティブに処理する | 外部データを自動的に変換する |
| 要求管理 | タイムアウトと再試行を構成する | 信頼性の高い API 通信を確保する |
RegEx 操作を使用する
SQL Server 2025 では、T-SQL で正規表現 (RegEx) のネイティブ サポートが追加され、クエリ内で強力なパターン マッチングとテキスト操作が直接可能になります。 開発者は、 REGEXP_MATCHES、 REGEXP_REPLACE、 REGEXP_LIKEなどの新しい関数を使用して、CLR (共通言語ランタイム) や外部スクリプトに依存することなく、入力の検証、複雑なパターンの抽出、高度な文字列変換の実行を行うことができます。 この機能により、データ クレンジング、書式の検証、動的パターンの検索などのタスクが簡略化され、最新のデータ処理シナリオSQL Server汎用性が高まります。
正規表現のサポート により、パターン マッチング機能が追加されます。
| 機能 | 目的 | 例 |
|---|---|---|
| REGEXP_MATCHES | 文字列がパターンと一致するかどうかをテストする | 電子メール形式を検証する |
| REGEXP_REPLACE | パターンを使用してテキストを置換する | データのクリーンアップと標準化 |
| REGEXP_EXTRACT | 一致する部分文字列を抽出する | 構造化テキストを解析する |
| REGEXP_LIKE | パターンベースの文字列比較 | パターンを使用してデータをフィルター処理する |
次の例は、SQL Server 2025 が sp_invoke_external_service を使用して直接外部 API を呼び出し、動的データとセキュリティで保護されたヘッダーを含む POST 要求を送信し、T-SQL ですぐに使用するために JSON 応答をキャプチャする方法を示しています。
-- Call an external API to enrich customer data
DECLARE @apiResponse JSON;
EXEC sp_invoke_external_service
@service_name = 'CustomerEnrichment',
@url = 'https://api.example.com/enrich',
@method = 'POST',
@headers = '{"Authorization": "Bearer {{azure_token}}"}',
@request_body = '{"customerId": @customerId}',
@response = @apiResponse OUTPUT;
次の例では、SQL Server 2025 が REGEXP_MATCHES などの RegEx 関数を使用して電子メール形式を検証し、REGEXP_REPLACE を使用して電話番号を標準化し、T-SQL で強力なテキスト検証と変換を直接有効にする方法を示します。
-- Validate email addresses using RegEx
SELECT
CustomerID,
Email,
CASE
WHEN Email REGEXP_MATCHES '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
THEN 'Valid'
ELSE 'Invalid'
END AS EmailStatus
FROM Customers;
-- Standardize phone numbers using RegEx
SELECT
PhoneNumber,
REGEXP_REPLACE(
PhoneNumber,
'^\+?1?[-. ]?(\d{3})[-. ]?(\d{3})[-. ]?(\d{4})$',
'($1) $2-$3'
) AS FormattedPhone
FROM Contacts;
イベント ストリーミングを構成する
SQL Server 2025 にはネイティブ イベント ストリーミング機能が導入されており、複雑な ETL パイプラインを使用せずに、リアルタイム データをデータベースから外部コンシューマーに直接フローできます。 ストリーミング プロトコルの組み込みサポートを使用すると、テーブル、ビュー、またはクエリからの変更を継続的ストリームとして、Azure Event Hubsなどのプラットフォームに発行できます。
変更イベント ストリーミングを設定する
変更イベント ストリーミングを設定する前に、Azure Event Hubs 名前空間が正しく構成されていることを確認します。
Change イベント ストリーミングでは、次の機能が提供されます。
- トランザクション ログの変更をAzure Event Hubsに直接ストリーミングする
- 従来の CDC と比較して I/O オーバーヘッドを削減する
- リアルタイム データ レプリケーションを有効にする
- イベント ドリブン アーキテクチャのサポート
変更イベント ストリーミングの主な利点には、次のようなものがあります。
- 待機時間の短縮: トランザクション ログからの直接ストリーミングにより、中間ストレージが不要
- リソース使用量の削減: CDC と比較して最適化された I/O 操作
- リアルタイム AI 統合: AI エージェントがデータの変更を即座に処理して対応できるようにする
- スケーラブルなアーキテクチャ: 大量のトランザクション環境を処理するように構築
開発者ツールと言語を使用する
SQL Server 2025 では、幅広い言語とツールのサポートにより、開発者の生産性が向上します。 開発者は、統合されたランタイム環境を通じて、Python、R、JavaScript などの最新言語と共に T-SQL を操作し、高度な分析と AI ワークフローをデータベース内で直接有効にすることができます。
強化されたVisual Studio拡張機能により、デバッグ、IntelliSense、デプロイ機能が強化され、新しい CLI ツールによって自動化とAzure Pipelinesが簡素化されます。 REST API エンドポイントとネイティブ JSON、RegEx、およびイベント ストリーミング機能と組み合わせることで、SQL Server 2025 では、最新のデータ ドリブン アプリケーションを効率的に構築するための統合プラットフォームが提供されます。
ドライバー Pythonインストールする
SQL Server 2025 の新しいPython ドライバーは次を提供します。
- pip を使用した簡単なインストール:
pip install mssql-python - パフォーマンス向上のための Async/await サポート
- 組み込みの接続プール
- IDE 統合をより良くするための型ヒント
- 包括的なエラー処理
次のPython スニペットは、Pythonを使用してSQL Server データベースに対して非同期クエリを実行する方法を示しています。
mssql.async ライブラリを使用して、connect('connection_string')との非ブロッキング接続を確立し、非同期での効率的なリソース管理を確保します。 接続内では、カーソルが作成され、SELECT TOP 10 * FROM Customersでawait cursor.execute()を使用して SQL クエリが非同期的に実行され、await cursor.fetchall()を使用してすべての結果が取得されます。
from mssql.async import connect
async with connect('connection_string') as conn:
async with conn.cursor() as cursor:
await cursor.execute('SELECT TOP 10 * FROM Customers')
results = await cursor.fetchall()
GitHub Copilotを使用して VS Code エクスペリエンスを強化する
Visual Studio Code用のMSSQL拡張機能には、GitHub Copilot統合によりAIを利用した機能が含まれています。
インテリジェント SQL 生成:
- 自然言語の説明に基づいて SQL クエリを完了する
- 最適化されたクエリ パターンの提案
- データベース スキーマの変更を生成する
スマート スキーマの探索:
- AI を利用したスキーマに関する推奨事項
- リレーションシップの自動検出
- スキーマ変更の影響分析
クエリの最適化:
- パフォーマンス向上に関する推奨事項
- インデックスの推奨事項
- 実行プランの分析
ORM のサポート:
- Entity Framework の移行を生成する
- データベース スキーマに基づいてモデルの変更を提案する
- データ アクセス層コードを作成する
MSSQL 拡張機能を使用して接続プロファイルを設定し、新しいクエリ エディターを開きます。 次のようなコメントを入力し始めるとき:
-- Find all customers who made purchases in the last 30 days
-- and calculate their total spending
Copilot意図を読み取り、完全な SQL クエリを自動的に提案します。
SELECT
c.CustomerID,
c.Name,
COUNT(o.OrderID) as OrderCount,
SUM(o.TotalAmount) as TotalSpending
FROM
Customers c
JOIN Orders o ON c.CustomerID = o.CustomerID
WHERE
o.OrderDate >= DATEADD(day, -30, GETDATE())
GROUP BY
c.CustomerID,
c.Name
HAVING
COUNT(o.OrderID) > 0
ORDER BY
TotalSpending DESC;
Tab または Enter キーを押してCopilotの提案を受け入れるか、正確さのために編集します。
これらの機能を使用すると、開発者は、AI 支援と最新のツールを使用して生産性を向上させながら、より高度で効率的で保守しやすいデータベース アプリケーションを構築できます。