HTTP メッセージシステムを使用して、SQL Remote はインターネット経由で Hypertext Transfer Protocol (HTTP) を使用してメッセージを送信します。メッセージはテキストフォーマットにエンコードされ、HTTP 経由でターゲットデータベースに送信されます。このメッセージは、HTTP サーバとして動作する SQL Anywhere データベースを使用して送受信されます。
SQL Remote メッセージをリモートデータベースとの間で転送する HTTP サーバとして動作する SQL Anywhere データベースサーバを使用します。デフォルトでは、新しく初期化された SQL Anywhere データベースには、メッセージサーバとして動作できるように定義された Web サービスはありません。sr_add_message_server、sr_drop_message_server、sr_update_message_server という 3 つのシステムストアドプロシージャが、新しく作成された SQL Anywhere データベースに定義されています。これにより、データベースが SQL Remote メッセージを転送するための HTTP サーバとして動作できるよう必要なデータベースオブジェクトを定義できます。
データベースは SQL Anywhere 16.0 で初期化され、3336 以上のビルド番号のデータベースサーバで初期化されている必要があります。SYS.SYSHISTORY システムテーブルに問い合わせ、データベースの初期化に使用されたデータベースサーバのバージョンとビルドを判断します。データベースが 16.0 と 3336 未満のビルド番号で初期化されている場合、"ALTER DATABASE UPGRADE PROCEDURE ON" を実行してデータベースを更新します。
別のデータベースサーバを実行するか、それとも既存の統合データベースをメッセージサーバとして使用するのかを決める必要があります。この決定を行う場合は次のことを考慮します。
リモートデータベースが、メッセージサーバで認証する場合、そのリモートデータベースのパブリッシャと認証用に提供されたパスワードが使用されます。統合データベースにユーザが存在していても、そのユーザは HTTP メッセージシステムの要件である定義済みパスワードを持っていないかもしれません (リモートユーザは接続の権限を持っていないかもしれません)。統合データベース内でリモートユーザに CONNECT 権限を付与することがセキュリティについての考慮事項である場合は、個別のデータベースを作成して、メッセージサーバとして機能させます。
統合データベースの負荷が大きい場合、ここにメッセージサーバ機能を追加すると、統合データベースを実行したときにコンピュータ上のリソースに過剰な負荷がかかるかもしれません。
メッセージサーバとして動作するデータベースに必要なデータベースオブジェクトを設定するには、データベースの SQL Remote 定義を問い合わせる sr_add_message_server ストアドプロシージャを呼び出します。 sr_add_message_server システムプロシージャを参照してください。
メッセージサーバを別のデータベースとして作成する場合、統合データベースの定義と一致する SQL Remote 定義で 2 番目のデータベースを定義する必要があります。dbunload ユーティリティを使用して統合データベースのコピーを作成し、-n オプションを指定して、データではなく統合データベースのスキーマのみをアンロードします。
dbunload -n -an -c "ENG=cons.DBN=cons;UID=DBA;PWD=sql" |
メッセージサーバとして別のデータベースを使用している場合、統合データベースの SQL Anywhere 定義に変更が行われた場合には、メッセージサーバデータベースにも対応する変更が行われる必要があります。
メッセージサーバを設定するには、SQL Remote メッセージが格納されているディレクトリにデータベースサーバがアクセスできる必要があります。メッセージが格納されているディレクトリを定義するには、SET REMOTE OPTION コマンドを使用して、root_directory HTTP メッセージパラメータを SQL Remote メッセージが格納されているディレクトリに設定します。次に、作成される新しいオブジェクトを所有しているデータベースユーザを選択して、ユーザがロールであることを確認します。最後に、sr_add_message_server ストアドプロシージャを実行して、そのオブジェクトを所有するユーザの名前を渡します。 SET REMOTE OPTION 文 [SQL Remote]とsr_add_message_server システムプロシージャを参照してください。
(リモートユーザの追加や削除など) メッセージサーバの SQL Remote 定義に変更が行われるたびに、sr_update_message_system ストアドプロシージャを実行して、メッセージサーバのサポートに必要なオブジェクトの定義を更新します。ストアドプロシージャが稼働し、オブジェクトが削除されて再作成される間、短期間メッセージサーバはレプリケーションに利用できなくなります。 sr_update_message_server システムプロシージャを参照してください。
このデータベースをもうメッセージサーバとして使用していない場合、sr_drop_message_system ストアドプロシージャを実行して、メッセージサーバをサポートするために作成されたオブジェクトを削除できます。 sr_drop_message_server システムプロシージャを参照してください。
メッセージサーバをサポートするのに必要なオブジェクトを作成した後で、メッセージサーバデータベースサーバを起動するときに、-xs オプションを使用してデータベースサーバに対する HTTP (および HTTPS) サポートを有効にする必要があります。 -xs の使用の詳細については、-xs データベースサーバオプションを参照してください。
メッセージサーバに必要なオブジェクトを定義した人々に関係する HTTP サーバ側プロトコルオプションには次のものがあります。
ServerPort | PORT デフォルトポートである 80 と 443 がすでにコンピュータ上で使用されている場合に、HTTP または HTTPS 要求を受信するためにデータベースサーバが使用するポート番号を指定します。 ServerPort (PORT) プロトコルオプションを参照してください。
MaxRequestSize | MAXSIZE 1 つの HTTP 要求の最大サイズを指定します。デフォルト値は 100 KB です。SQL Remote メッセージサイズ (dbremote コマンドライン上の -l オプション) を 100 KB を超える値に定義した場合、データベースサーバが受信できる最大 HTTP 要求のサイズも増やす必要があります。デフォルトの SQL Remote メッセージサイズは 50 KB です。 MaxRequestSize (MAXSIZE) プロトコルオプションを参照してください。
Identity (HTTP のみ) HTTPS を使用している場合、ID ファイルには、パブリック証明書とプライベートキーが含まれており、自己署名されない証明書の場合は、さらに署名を行うすべての証明書も含まれています。これには暗号化証明書も含まれます。この証明書のパスワードは、Identity_Password パラメータで指定してください。 Identity プロトコルオプションを参照してください。
Identity_Password (HTTP のみ) トランスポートレイヤセキュリティを使用している場合、このオプションにより、Identity プロトコルオプションで指定した暗号化証明書に対応するパスワードを指定します。 Identity_Password プロトコルオプションを参照してください。
SQL Remote と HTTP を使用するには、システムに参加する各データベースに HTTP アドレス、ユーザ ID、パスワードが必要です。これらは別々の識別子です。HTTP アドレスは各メッセージの送信先で、ユーザ ID とパスワードは、サーバに認証を行うときにユーザが入力する名前とパスワードです。
SQL Remote Message Agent (dbremote) がメッセージシステムに接続してメッセージを送受信する前に、ユーザは制御パラメータのセットを自分のコンピュータにあらかじめ設定しておく必要があります。設定していない場合は、ユーザに必要な情報の指定を要求するプロンプトが表示されます。この情報が必要となるのは、初回接続時のみです。この情報は保存され、以後の接続でデフォルトとして使用されます。
HTTP メッセージシステムでは、SET REMOTE OPTION 文で設定される次の制御パラメータを使用します。
certificate 安全な (HTTPS) 要求を行うには、HTTPS サーバで使用される証明書にクライアントがアクセスできる必要があります。必要な情報は、セミコロンで区切られたキー/値のペアの文字列で指定されます。ファイルキーを使用して証明書のファイル名を指定できます。ファイルキーと証明書キーを一緒に指定することはできません。次のキーを使用できます。
キー | 省略形 | 説明 |
---|---|---|
file | 証明書のファイル名 | |
certificate | cert | 証明書自体 |
company | co | 証明書で指定された会社 |
unit | 証明書で指定された会社の部署 | |
name | 証明書で指定された通称 |
証明書は、HTTPS サーバに対する要求、または安全でないサーバから安全なサーバにリダイレクトされる可能性がある要求に対してのみ必要です。PEM でフォーマットされた証明書のみがサポートされています。certificate='file=filename'
client_port SQL Remote が HTTP を使用して通信するポート番号を識別します。これは「送信」TCP/IP 接続をフィルタするファイアウォール経由で接続するためのもので、この用途にかぎり推奨されています。単一のポート番号、ポート番号の範囲、または両方の組み合わせを指定できます。指定したクライアントポートの数が少ないと、SQL Remote が前回の実行でポートを閉じた後すぐにオペレーティングシステムがポートを解放しなかった場合に、SQL Remote でメッセージの送受信ができなくなる可能性があります。client_port=nnnnn[-mmmmm]'
debug YES に設定すると、すべての HTTP コマンドと応答が出力ログに表示されます。この情報は、HTTP のサポート問題のトラブルシューティングに使用できます。デフォルトは NO です。
https HTTPS (https=yes) または HTTP (https=no) を使用するかどうかを指定します。
password メッセージサーバのデータベースパスワード。RFC 2617 の基本認証を使用してサードパーティの HTTP サーバとゲートウェイに対する認証を行います。password='password'
proxy_host プロキシサーバの URI を指定します。SQL Remote がプロキシサーバを介してネットワークにアクセスする場合に使用します。SQL Remote がプロキシサーバに接続し、そのプロキシサーバを介してメッセージサーバに要求を送信することを示します。proxy_host=' http://proxy-server[:port-number]'
reconnect_retries 失敗になる前に、リンクがサーバでソケットを開こうと試行する回数。デフォルト値は 4 です。このパラメータを設定すると、再接続のみに影響します。FTP リンクによる最初の接続には影響しません。
reconnect_pause 接続の試行失敗後に次の接続まで待機する秒数。デフォルトは 30 秒です。このパラメータを設定すると、再接続のみに影響します。FTP リンクによる最初の接続には影響しません。
root_directory この HTTP 制御パラメータは、クライアント側で指定された場合には無視されます。sr_add_message_server または sr_update_message_server ストアドプロシージャを呼び出す前に、メッセージサーバでこの制御パラメータを定義します。メッセージサーバがアクセスできる SQL Remote メッセージの格納されているディレクトリを指定します。HTTP メッセージシステムを使用する場合、リモートユーザまたはパブリッシャに指定するアドレスには、1 つのサブディレクトリのみを含めることができます。複数のサブディレクトリを含めることはできません。root_directory='c:\msgs'
url サーバ名または IP アドレスを指定し、任意で、使用する HTTP サーバのポート番号をセミコロンで区切って指定します。要求が Relay Server を経由する場合は、URL 拡張子を任意で追加して、要求の渡し先のサーバファームを示すことができます。url ='server-name[:port-number][url-extension]'
user メッセージサーバのデータベースユーザ ID。RFC 2617 の基本認証を使用してサードパーティの HTTP サーバとゲートウェイに対する認証を行います。user='userid'
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |