リモートサーバを作成します。
CREATE SERVER server-name CLASS server-class-string USING connection-info-string [ READ ONLY ]
server-class-string : 'ADSODBC' | 'ASEODBC' | 'DB2ODBC' | 'HANAODBC' | 'IQODBC' | 'MIRROR' | 'MSACCESSODBC' | 'MSSODBC' | 'MYSQLODBC' | 'ODBC' | 'ORAODBC' | 'SAODBC' | 'ULODBC'
connection-info-string : { 'data-source-name' | 'sqlanywhere-connection-string' }
CREATE SERVER server-name CLASS 'DIRECTORY' USING using-string
using-string : 'ROOT = path [ ;SUBDIRS = n ] [ ;READONLY = { YES | NO } ] [ ;CREATEDIRS = { YES | NO } ] [ ;DELIMITER = { / | \ } ]'
CLASS 句 リモート接続に使用するサーバクラスを指定します。サーバクラスには、詳細なサーバ機能情報が入っています。
構文 2 では DIRECTORY クラスを使用してローカルコンピュータのディレクトリにアクセスしています。
ディスクサンドボックスが有効になっている場合、データベースの操作はメインデータベースファイルが格納されているディレクトリに制限されます。 詳細はディスクサンドボックスを参照してください。
USING 句 構文 1 では、USING 句によってデータベースサーバに接続文字列を提示します。適切な接続文字列は使用されるドライバによって決まり、ドライバは server-class-string によって決まります。
USING 句は ODBC 接続文字列であり、'DSN=data-source-name'
を含めて ODBC データソース名を指定したり、'DRIVER=driver-name'
を含めてUNIX のドライババイナリまたは Windows のドライバ名を指定できます。
SQL Anywhere リモートサーバ (SAODBC サーバクラス) の場合、connection-info-string パラメータには任意の有効な SQL Anywhere 接続文字列を指定できます。任意の SQL Anywhere 接続パラメータを使用できます。たとえば、接続に問題がある場合は、LOG 接続パラメータを含めて接続試行をトラブルシューティングできます。
USING 句内の文字列に、カッコで囲んだローカル変数名またはグローバル変数名を入れることもできます ({variable-name})。SQL 変数名は、CHAR、VARCHAR、または LONG VARCHAR のデータ型にする必要があります。たとえば、'DSN={@mydsn}'
を含む USING 句は、@mydsn が SQL 変数であり、リモートデータアクセスサーバへの接続時に @mydsn 変数の現在の内容が置き換えられることを示します。
構文 2 では、USING クラスでローカルディレクトリに次の値を指定しています。
ROOT 句 ディレクトリアクセスクラスのルートとなる、データベースサーバへの相対パスを指定します。ディレクトリアクセスサーバ名を使用してプロキシテーブルを作成すると、プロキシテーブルのパスはこのルートパスに対する相対パスになります。
ディスクサンドボックス機能が有効になっている場合、そのデータベースの操作はメインデータベースファイルがあるディレクトリのみに制限されます。 ディスクサンドボックスを参照してください。
SUBDIRS 句 データベースサーバがアクセス可能な、ルート内のディレクトリレベルの数を表す 0 ~ 10 の数を指定します。SUBDIRS を省略したときまたは 0 に設定したときは、ディレクトリアクセスサーバ経由でルートディレクトリのファイルのみにアクセスできます。ディレクトリアクセスサーバ経由で使用できるディレクトリまたはサブフォルダのいずれかにプロキシテーブルを作成できます。
READONLY 句 ディレクトリアクセスサーバからアクセスするファイルが READONLY であり修正できないかどうかを指定します。デフォルトでは、READONLY は NO に設定されています。
CREATEDIRS 句 ディレクトリアクセスサーバを使用してディレクトリを作成できるかどうかを指定します。デフォルトは NO です。
DELIMITER 句 file_name カラム内のパスが、スラッシュ (/) 文字で区切られるのか、バックスラッシュ (\) 文字で区切られるのかを指定します。デフォルトでは、ネイティブのパスのデリミタが使用されます。
USING 句内の文字列に、カッコで囲んだローカル変数名またはグローバル変数名を入れることもできます ({variable-name})。SQL 変数名は、CHAR、VARCHAR、または LONG VARCHAR のデータ型にする必要があります。たとえば、'ROOT={@mypath}'
を含む USING 句は、@mypath が SQL 変数であり、ディレクトリアクセスサーバへの接続時に@mypath 変数の現在の内容が置き換えられることを示します。これによって、動的なディレクトリアクセスサーバを作成できます。
USING 句の変数の使用の詳細については、ディレクトリアクセスサーバの作成 (SQL の場合)を参照してください。
この文は、Windows Mobile ではサポートされません。
リモートサーバを作成すると、ISYSSERVER システムテーブルに追加されます。テーブルを表示するには、対応するシステム ビュー SYSSERVER を使用します。
構文 1 CREATE SERVER 文はリモートサーバを定義します。
SQL Anywhere リモートサーバの定義時に ODBC ドライバマネージャをバイパスするには、以下の構文を使用し、connection-info-string の残りの部分を後ろに続けます。
CREATE SERVER remote-server CLASS 'SAODBC' USING 'DRIVER=SQL Anywhere Native;DSN=my-dsn;UID=my-username;PWD=my-pwd'; |
この構文を使用すると、リモートデータアクセスで SQL Anywhere ODBC ドライバを直接ロードできます。この構文は Windows と UNIX でサポートされます。SQL Anywhere ODBC ドライバを直接ロードすると、現在のサーバのバージョンの ODBC ドライバが使用されるようになります。また、SQL Anywhere ODBC ドライバをリモートデータアクセスにのみ使用する場合は、登録する必要はありません。
アプリケーションで SQL Anywhere 以外のリモートサーバも使用している場合、または 'DRIVER=SQL Anywhere Native'
を使用しないで定義されている SQL Anywhere リモートサーバがある場合、リモートデータアクセスは他のリモートサーバのドライバマネージャを引き続き使用します。
UNIX プラットフォームでは、SQL Anywhere ODBC ドライバも参照できます。構文は次のとおりです。
USING 'DRIVER=SQL Anywhere 16;DSN=my-dsn' |
構文 2 CREATE SERVER 文を使用すると、データベースサーバが稼働しているコンピュータのローカルディレクトリ構造にアクセスするディレクトリアクセスサーバを作成できます。ディレクトリアクセスサーバを使用する必要があるデータベースユーザごとに、外部ログインを作成する必要があります。UNIX では、データベースサーバは特定のユーザ権限で実行されているため、ファイルパーミッションはデータベースサーバユーザに付与されている権限に基づきます。
SERVER OPERATOR システム権限が必要です。
オートコミット。
SQL/2008 ベンダー拡張。
次の例は、SQL Anywhere ODBC ドライバを使用して、RemoteSA という名前の SQL Anywhere リモートサーバを作成します。
CREATE SERVER RemoteSA CLASS 'SAODBC' USING 'DRIVER=SQL Anywhere 16;DSN=RemoteDS'; |
次の例は、ODBC ドライバマネージャを使用しないで、SQL Anywhere ODBC ドライバを直接ロードします。
CREATE SERVER RemoteSA CLASS 'SAODBC' USING 'DRIVER=SQL Anywhere Native;DSN=RemoteDS'; |
次の例は、変数のリファレンスを使用して、動的なリモートデータアクセスサーバを作成します。この例を実行するには、MANAGE ANY USER および CREATE TABLE システム権限が必要です。
CREATE SERVER RemoteSA CLASS 'SAODBC' USING 'DRIVER=SQL Anywhere 16;DSN={dsn_string};Server=saremote;UID=DBA;PWD=sql'; CREATE VARIABLE dsn_string LONG VARCHAR; SET dsn_string = 'Test16'; CREATE EXTERNLOGIN DBA TO RemoteSA; CREATE EXISTING TABLE test_employees AT 'RemoteSA...Employees'; SELECT * FROM test_employees; DROP REMOTE CONNECTION TO RemoteSA CLOSE ALL; |
次の例は、ASE ODBC ドライバを使用して、ase_prod という名前の Adaptive Server Enterprise (ASE) リモートサーバを作成します。
CREATE SERVER ase_prod CLASS 'ASEODBC' USING 'DSN=remoteASE'; |
次の例は、Oracle サーバ oracle723 のリモートサーバを作成します。ODBC データソース名は oracle723 です。
CREATE SERVER oracle723 CLASS 'ORAODBC' USING 'oracle723'; |
次の例は、ディレクトリ c:\temp 内のファイルのみを表示するディレクトリアクセスサーバを作成します。
CREATE SERVER diskserver0 CLASS 'DIRECTORY' USING 'ROOT=c:\\temp'; CREATE EXTERNLOGIN DBA TO diskserver0; CREATE EXISTING TABLE diskdir0 AT 'diskserver0;;;.'; -- Get a list of those files. SELECT privileges, file_name, size FROM diskdir0; |
次の例は、2 つの異なるディレクトリを探索するために使用される、動的なディレクトリアクセスサーバを作成します。
CREATE SERVER diskserver9 CLASS 'DIRECTORY' USING '{dir_options}'; CREATE EXTERNLOGIN DBA TO diskserver9; CREATE EXISTING TABLE diskdir9 AT 'diskserver9;;;.'; CREATE VARIABLE dir_options VARCHAR(256); SET dir_options = 'ROOT=c:\\temp;SUBDIRS=9;DELIMITER=/'; SELECT * FROM diskdir9; DROP REMOTE CONNECTION TO diskserver9 CLOSE ALL; SET dir_options = 'ROOT=c:\\ProgramData;SUBDIRS=9;DELIMITER=/'; SELECT * FROM diskdir9; |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |