Skip to main content
評価してください: 

SQL Server 2005 機能紹介

統合と相互運用性

最終更新日: 2006 年 3 月 15 日

このページの内容は公開・更新された当時のものです。

企業や組織などの枠を超えてサービスを提供できるような、相互運用性の高いシステムが必要とされています。しかし、現在のシステムの多くは、その組織のルールに沿って構成されており、外部のシステムと結合しようとした途端に、まったく用をなさなくなってしまうことがあります。SQL Server 2005 では、そのような相互運用するシステム間でやり取りされるメッセージやデータを、ある共通の整合性を持つ情報に変換、または統合可能にする機能や手段を提供します。

ここでは、統合と相互運用性の面から、SQL Server 2005 が持つ機能をご紹介します。

※各機能のタイトルの下に表示されているアイコンは対応するエディションを表しています。

 Mobile Edition   Express Edition   Workgroup Edition   Standard Edition   Enterprise Edition

トピック

統合と相互運用性での問題と解決
Integration Services によるデータソース統合
Web サービスによるデータ統合と互換性
Service Broker によるアプリケーションの疎結合
Notification Services での通知サービス
関連サイト

統合と相互運用性での問題と解決

システムはさまざまな要因によって、機能、環境、オペレーションなどが決定されるため、あらかじめ外部のシステムと連携させることを念頭に設計されなければ、汎用性の高いシステムとなることはほとんどありません。また、汎用性を持たせて設計したつもりが、環境や、時代の経過などにより、その性質が損なわれてしまう場合もあります。

これらの要因となりやすい一般的なものにはいくつかありますが、一番多いものでは、やり取りされるデータもしくはメッセージの種類、フォーマットの違いによる問題です。次に、セキュリティやプロトコルなど環境による制限が挙げられます。さらには、運用などが絡む、オペレーション、手順の不一致などによる要因も考えられます。SQL Server 2005 では、メッセージ、データ形式の不一致による問題を Integration Services、セキュリティやプロトコルによる制限を Web Service、 運用などのオペレーションによる問題を Service Broker,Notification Services の機能により解決できます。

ページのトップへ

Integration Services によるデータソース統合

Standard EditionEnterprise Edition

Integration Services では、データを抽出、変換、統合するなどの、データの加工と統合をグラフィカル ツールにより行います。たとえば、ネットワーク上に分散しているエクセル データや、CSV (Comma Separated Values) データ、異種データベース データから、SQL Server 2005 が必要なデータだけを抽出して、すべてを、同じフォーマットに変換処理し、データベースに格納するといった処理を行います。

開発デザイナ画面

SQL Server 2005 の Integration Services は、SQL Server 2000 でも搭載されていた DTS (データ交換サービス) 機能に対して、どのデータ処理を行うかを選択できる処理コンポーネントの拡張、どのような流れで処理を制御するかを決定する処理フローの強化、データ処理中に起こったイベントを拾い、それに応じて処理を実行できるイベント ハンドラ機能など、さまざまな機能が追加されています。

コンポーネントの種類

Integration Services で行うデータ処理の中には、メンテナンス プランのタスクも含まれています。これにより、定期的に実行しなければならないデータベースのバックアップや、データベースの圧縮、インデックスの再構築処理などのメンテナンス タスクの処理は、プロパティで必要なデータベース情報を設定するだけで簡単に構築することができます。

メンテナンスタスク

イベント ハンドラ機能では、パッケージの実行中にエラーが発生した場合、エラー イベントをキャッチし、エラー情報の管理者に詳細メールを送信したり、エラー時の対応処理を続行させるなど、処理パターンをより柔軟に設定することが可能です。

イベントハンドラ

Integration Services では、設定したデータ処理を 1 つのパッケージとして実行することができるように、運用管理面でも強化されています。これにより、このパッケージをプロジェクトとして開発、管理することができるため、本番環境への移行や設定の変更などをサーバー環境に依存することなく容易に行うことができます。パッケージにおけるサーバーの設定は接続マネージャによって管理されているため、この接続マネージャの設定を変更するだけですべてのサーバーへ設定が反映されます。

サーバー接続の変更

接続マネージャ

パッケージの運用面においても機能が強化されており、パッケージの実行が行われるたびに、ログ プロバイダがタスク、コンテナ、パッケージに発生するイベントをキャプチャし、指定された出力先 (テキスト ファイルや XML ファイル、SQL Server など) にログを記録することができます。また、パッケージには、何がどこまで正常に実行されたかを知らせるチェック ポイントを設けることができます。これは、パッケージの実行において処理が途中で失敗した場合、ロールバックされないタスクに対するデータ処置範囲がどこまでかを見極めるポイントとなり、バッチを完了させるために途中から再実行させたいときなどに有効な手段となります。

Integration Services は、データの変換、統合処理を柔軟に行うことにより、異種システム間のデータソースを取りまとめる機能と手段を提供すると共に、システム環境の変化、メンテナンスなどの運用面でも十分に対応できるだけの機能が取り揃えられた、優れたツールとなっています。

ページのトップへ

Web サービスによるデータ統合と互換性

Standard EditionEnterprise Edition

物理的にシステム環境が限定されることによって、システム連携やデータの統合はより困難になります。たとえば、プラットフォームや開発言語が異なったり、物理的にポートを空けることができないといった問題が発生します。Web サービスは、そのような制限に依存せずに、サービス コンポーネントを公開することができるため、物理的に限定された環境である企業間でのシステム連携やデータの提供などを行うことができます。SQL Server 2005 では、HTTP をネイティブにホストすることができるため、データベース オブジェクトを Web サービスとして公開することができます。その結果、IIS (Internet Information Services) といった Web サーバーを介させる必要がありません。また PC からの接続はもちろん、モバイル デバイスからも、SQL Server により近いレイヤーに統一された手法でアクセスすることが可能になります。

以下では、Web サービスの設定について、簡単に説明します。SQL Server 2005 で、データベース オブジェクトを公開させるためには、公開するデータベース オブジェクトに対するエンドポイントを作成します。SQL Server Management Studio のクエリ エディタで、公開したいデータベース オブジェクトに対し、次のようなクエリを実行するだけで Web サービスを公開できます。

Create endpoint Demo     
  As HTTP (     
    Authentication = (integrated),    
    Path = ‘/sql/demo’,    
    Ports = (clear),    
    State = started    
  )    
For soap(    
  Webmethod    
  ‘http://test.ms.com’,’testproc1’    
    (name = demodb.dbo.testproc1),    
    Wsdl = default    
)

上のサンプル コードは、demodb というデータベースにある、testproc1 というストアド プロシージャを Web サービスとして公開しています。Web サービスに対してリクエストを要求する場合の URL は「Path = ‘/sql/demo’,」のセンテンスにあるように「http://test.ms.com/sql/demo?WSDL」の URL で公開しています。URL にアクセスして、コード中の「WSDL = default」を記述することにより WSDL が自動生成されていることが、ブラウザ上で確認することができます。

また、SQL Server 2005 の Web サービスでは、セキュリティ上から匿名アクセスがサポートされておらず、必ず認証を通した後、アクセスできるようになっています。その際の認証レベルには 2 つあり、1 つは HTTP レベルでの認証で、Basic、Digest、Integrated 認証が利用でき、また、SQL Server レベルでの認証では、 SQL 認証が可能となります (SQL 認証の場合は、「LOGIN_TYPE = MIXED」とする必要があります)。

Web サービスへのリクエストを要求するクライアント アプリケーションも、通常の Web サービス クライアント アプリケーションと同様に作成することができます。ただし、SQL Server の Web サービスは、Object 型の配列型として、結果を返します。

ページのトップへ

Service Broker によるアプリケーションの疎結合

Express EditionWorkgroup EditionStandard EditionEnterprise Edition

これまでのシナリオでも、同期処理を前提としてシステムやデータ連携の手法を紹介してきました。しかし、データ連携や、システム間でやり取りされる処理の中には、非同期でなければ実装が難しかったり、非効率である場合もあります。その場合、業務システムにおけるバッチのような半日もかかる大量のデータ処理や、受発注システムにみられるような長期間にわたるビジネス プロセスが介入する処理などの終了を待つ例が考えられます。そこでは、システム間でステータスを確認し合う非同期のメッセージのやり取りをするメッセージング サービスが、従来より取り入れられてきました。しかし、これらの技術を利用する目的のほとんどは、データベースに関連する処理を待つことが多いのに対し、実装方法は、データベース層からのアプローチではなく、アプリケーション層から行う必要があり、実装に手間がかかるということもありました。

そこで SQL Server 2005 では、データベース エンジンにメッセージング サービスを統合しました。これによって、ストアド プロシージャからメッセージを送信したり、メッセージを送信した先のストアド プロシージャを呼び出し実行させるといった、非同期処理が可能となります。
また、SQL Server 2005 からは Web サービスをネイティブにホストすることができるため、サービス ブローカ機能を利用したストアドプロシージャも Web サービスとして公開することができます。

Service Broker では、メッセージング サービスの基本機能に加え、メッセージ順序の整合性やメッセージの重複回避など、他のメッセージング サービスでは難しかったデータの信頼性も備えています。

Service Broker のサービス設定は、すべて Transact-SQL での実行となり (ストアド プロシージャなどは SQL CLR により C# や VB での記述が可能)、専用の GUI ツールは提供されていません。メッセージの送信元 (パブリッシャ)、送信先 (サブスクライバ) 共に Message Type、 Contract、 Queue、 サービスの設定が必要となります。また、別サーバー間でのやり取りには、あらかじめ証明書の設定が必要となります。

次に、Service Broker の登録、およびその呼び出しを簡単に説明します。

1. Message Type と Contract の登録により、どのようなデータでメッセージのやり取りを行うかを決定します。現在 Message Type には、XML 形式とバイナリ形式、およびヘッダーのみが提供されています。Contract では、使用する Message Type を設定します。

CREATE MESSAGE TYPE [http://www.develop.com/messages/Invoice]    
  VALIDATION = VALID_XML     
    WITH SCHEMA COLLECTION invoice_xsd
CREATE CONTRACT     
 [//develop.com/Expenses/ExpenseSubmission]    
   (     
    [//develop.com/Expenses/SubmitExpense]    
      SENT BY INITIATOR,    
    [//develop.com/Expenses/ApprovedOrDenied]    
      SENT BY TARGET,    
    [//develop.com/Expenses/ExpenseReimbursed]    
      SENT BY TARGET    
   )

2. Queue の作成で、送信されたメッセージの配置先を設定します。

CREATE QUEUE ExpenseQueueC    
   WITH STATUS = ON    
   ACTIVATION (    
   PROCEDURE_NAME = expense_activation,    
   MAX_QUEUE_READERS = 5,    
   EXECUTE_AS USER = 'sa')

3. サービス インスタンスの作成で、どのようなサービスを実行させるかを設定します。

CREATE SERVICE [//develop.com/Expenses]     
  ON ExpenseQueue    
  ([//develop.com/Expenses/ExpenseSubmission],    
   [//develop.com/Expenses/ExpenseProcessing])

Management Studio では、設定した Service Broker の各オブジェクトが確認できます。

Service Broker オブジェクトの確認

4. 設定が終わった後、サービスの開始、メッセージの送信を行います。

DECLARE @SqlEventMessage varbinary(max)    
SET @SqlEventMessage = '0x019381...';    
SEND ON CONVERSATION @conversation_handle    
   MESSAGE TYPE [//develop.com/Events/PostEvents]    
   (@SqlEventMessage)

実行すると以下のようなメッセージが表示されます。

メッセージの受信

メッセージの受信は、以下のコマンドを実行します。

RECEIVE     
  @conversation_handle,     
  @message_type_name,     
  @message_body     
FROM ExpenseQueue     
DECLARE @conversation_handle uniqueidentifier    
-- ハンドルの取得     
SET @conversation_handle  = @variable;    
RECEIVE * FROM ExpenseQueue     
  WHERE conversation_handle = @conversation_handle

ページのトップへ

Notification Services での通知サービス

Standard EditionEnterprise Edition

データの連携において、これまで紹介してきた手段とは少し性質の異なるものに、メッセージもしくはデータを配信することによって、離れた環境にあるシステム、アプリケーションとのデータ連携が可能となる通知サービスがあります。SQL Server 2005 には通知サービスとして、Notification Services が搭載されています。

Notification Services は、決められた間隔ではなくイベント ドリブンなデータをメッセージとし、そのサービスを利用しているユーザーが定義した範囲のデータをデバイスに発信させることができます。たとえば、株価の変動通知サービスの場合、各アナリストが事前に定義したパーセンテージに基づき、Notification Service 側では株価の変動が発生するたびに、パーセンテージをチェックし条件に一致していればメッセージをユーザーに発信させることができます。 Notification Services では、このように必要な情報をデータが発生したタイミングで、サービスを受けるサブスクライバの元へ配信することができます。通常ではクライアント側が、サーバーに側に必要なデータが存在するか一定の間隔でポーリングする必要がありますが、Notification Services ではイベント ドリブンでのデータ配信のため、新しいデータを即座に入手できると共に、クライアント側では実装の手間やサーバーへの過大な負荷を防ぐことができます。

Notification Services による通知アプリケーションの開発は、通知アプリケーションの構成を設計、構成ファイルおよびアプリケーション設定ファイル (ADF) の作成、通知アプリケーションのインスタンスとデータベースの作成、ユーザーが情報を登録、修正、削除するためのサブスクリプション管理アプリケーションの作成、実際のシステム環境への通知アプリケーションの展開、の順に行います。

Notification Services での通知アプリケーションの開発は、Management Studio で開発することができます (管理アプリケーションなどは、Visual Studio 2005 から作成する必要があります)。以下では、構成ファイル、アプリケーション設定ファイルの作成を行っています。

構成ファイルの設定

また、下図は通知アプリケーションのインスタンスを Management Studio によって作成しています。

サービスインスタンスの作成

ページのトップへ

関連サイト

技術情報 - TechNet

SQL Server 2005 Integration Services の概要

SQL Server Integration Services の管理と配置

ページのトップへ