Skip to Content
Author's profile photo Sawa Ito

クローンシステムで SAP SQL Anywhere データベースを稼働させる

このページは、以下の英語ページの抄訳です。最新の情報については、英語ページを参照してください。

 

 

 

既存のシステムをクローン化して、そのイメージを他のコンピューターに配備したいと思うことがあるかもしれません。

例えば、トレーニングを実施する時や、大量に配備する必要がある場合です。

 

SQL Anywhere データベースサーバーが埋め込まれたアプリケーションでは、そのままでは問題が発生する可能性があります。なぜならば、TCP/IP プロトコルを使用する場合には、データベースサーバー名はそのネットワーク内でユニークでなければならないからです。何が起こるかと言うと、「マスター」コンピューターイメージは、予想どおりの動きをしますが、「クローン」のシステムを起動しても、同じサーバー名がすでに使用されているためデータベースサーバーは起動できません。

 

もしアプリケーションが、シェアードメモリーを使用してデータベースサーバーに接続できる場合は、いくつか方法があります。

 

  1. シングルユーザー、シングルコンピューターでの使用のためのパーソナルデータベースサーバー (dbeng16) を使用する。または、
  2. ネットワークデータベースサーバー (dbsrv16) を使用して、 “-x none” オプションでTCP/IP ネットワークプロトコルを無効にする

コマンドラインは以下のどれかになります。

 

dbeng16.exe -n MyServerName MyDatabase.db

 

dbsrv16.exe -n MyServerName -x none MyDatabase.db

 

これらどちらのコマンドもデータベースサーバー MyServerName を起動し、データベースファイル MyDatabase.db をロードします。違いは、パーソナルデータベースサーバー (dbeng16) には、いくつかの制限があるという点です (例 同時接続 10、1CPUあたりの最大コア数4)。

制限の詳細リストは、こちらを参照してください。

これを避けたい場合には、ネットワークデータベースサーバー (dbsrv16) を使用してください。TCP/IP ネットワークプロトコル (例えば、jConnect JDBC ドライバーを使用したJavaのアプリケーションなど) を使用してアプリケーションに接続する必要がある場合には、同様に2つの方法がありますが、少し異なります。

 

  1. パーソナルデータベースサーバー (dbeng16) を使用し、「-x tcpip」オプションで、TCP/IP ネットワークプロトコルを有効にする。または
  2. ネットワークデータベースサーバー (dbsrv16) を使用し、特定のネットワークプロトコルオプションで他の複数のコンピューターのそのデータベースへの接続方法をコントロールする。

 

パーソナルデータベースサーバーのコマンドラインは、以下のようになります。

 

dbeng16.exe -n MyServerName -x tcpip MyDatabase.db

 

パーソナルデータベースサーバーは、先に述べた制限があるためネットワークデータベースサーバーを使用する必要がある場合には、いくつかの方法から選択することができます。ユニークなサーバー名の問題を回避する方法の一つとしては、コンピューター名のような環境変数を使用してデータベースサーバーを起動します。コマンドラインは、以下のようになります。

 

dbsrv16.exe -n MyServer-%COMPUTERNAME% -x tcpip MyDatabase.db

 

これは、ネットワークデータベースサーバー「MyServer-%COMPUTERNAME%」で、コンピューター名はネットワーク内のマシン名でユニークです。このアプローチは、多くの場合に有効なものの、いくつかの欠点があります。

 

  1. 環境変数 %COMPUTERNAME% は、適切に定義される必要があります。通常、適切に定義されていますが、管理ユーザー側で変更できてしまいます。
  2. ODBC を使用してデータベースへ接続しようとする場合、データベースサーバーを見つけることができないかもしれません。コマンドラインユーティリティで %COMPUTERNAME% を使用すると機能しますが、ODBC Administrator はこれだと問題があります。そのため、%COMPUTERNAME% をその文字そのものとして翻訳します。 (環境変数の値に置き換えません)

 

この方法では、しかしながら、データベースサーバー名およびIPアドレスがわかれば、他のコンピューターがデータベースにアクセスすることができてしまいます。

 

二番目のアプローチは、データベースサーバーを起動する際に、 「LocalOnly=YES」 ネットワークプロトコルオプションを以下のように使用するものです。

 

dbsrv16.exe -n MyServer -x tcpip(LocalOnly=YES) MyDatabase.db

 

これは、ネットワークデータベースサーバーを起動しますが、ローカルコンピューターへの接続を制限します。本質的には、パーソナルデータベースサーバーを起動するのと同じ動作ですが、パーソナルデータベースサーバーの制限はありません。

 

どちらの方法を選択するかは、何をしたいかに依存します。最終的には、結果はほとんど同じで、クローンのシステムのデータベースサーバーを起動するに問題はありません。

 

 

 

 

===

 

SAP SQL Anywhere に関する詳細情報は、SAP SQL Anywhere Communityページ<英語> を参照してください。

 

上記のコミュニティーに掲載されている技術情報は、順次SQL Anywhere 日本語コミュニティ

に掲載しています。

 

SQL Anywhere に関してはまずはこちらをご参照ください。無期限でご利用いただける無償の Developers Edition もこちらからダウンロードが可能です。

 

SQL Anywhere に関して技術的な質問のある方はコミュニティに登録し、
「Ask a Question」機能をご利用ください。

Language には「Japanese」、
Primary Tag には「SAP SQL Anywhere」を選択
User Tagに「sql anywhere」「sql anywhere Japanese question」

を入力してください。

不具合につきましては、サポート契約者様専用の問い合わせ方法にてお問い合わせください。

 

======================
ご購入に関するお問い合わせ

こちらよりお問い合わせください。

Assigned Tags

      Be the first to leave a comment
      You must be Logged on to comment or reply to a post.