ツールと統合サービスを使用して開発者の生産性を向上させる

完了

SQL Server 2025 には、開発者がデータ、イベント、API を操作するための機能とツールが用意されています。 このユニットでは、SQL Server 2025 の開発機能について説明します。

データ エンリッチメント機能を実装する

SQL Server 2025 では、いくつかの重要な機能を使用してデータ エンリッチメント機能が大幅に向上します。

ネイティブ JSON の操作

SQL Server 2025 では、ネイティブ JSON のサポートが強化されており、T-SQL で JSON を直接格納、クエリ、操作できます。 JSON_OBJECTJSON_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_MATCHESREGEXP_REPLACEREGEXP_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 Customersawait 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 支援と最新のツールを使用して生産性を向上させながら、より高度で効率的で保守しやすいデータベース アプリケーションを構築できます。