SQL Server連携時の取得定義の構文について説明します。
記述形式は、以下の表記方法により構文を示しています。
< >
構文を構成する要素の名前を示します。ある要素は、さらに他の要素によって詳細に定義されることがあります。
:: =
この記号の左側の要素が、右側の要素によって定義されることを示します。
[ ]
省略可能な要素を示します。
{ }
要素のまとまりを示します。また、{}内に書かれているいくつかの要素のうちの1つを選択することを示す場合にも使用します。選択できる要素は | で区切って記述します。
|
縦棒の後ろに続く要素が、縦棒の前の要素の代わりに記述できることを示します。
…
前の要素が繰り返されることを示します。この記号が{}で囲まれた形式の部分の直後に記述されている場合は、{ }で囲まれた部分の繰り返しを示します。
( )
構文の表記記号ではなく、構文を構成する文字の1つです。示されている位置に正しく記述する必要があります。
また、記述形式だけでは表現できない内容については構文規則で、指定値の説明については一般規則で補足します。
記述形式
<取得定義>:: =
LOGFMT <取得定義名>
[ { <取得対象情報>… ]
[ <ジャーナル・チェックポイント情報> ]
[ <コメント> ] ;
<取得対象情報>:: =
{ <取得対象詳細情報> | <システム取得項目情報> }
<取得対象詳細情報>:: =
TABLE <テーブル識別情報>
( <列情報> [ { , <列情報> } … ] )
<システム取得項目情報>:: =
SYSITEM <システム取得項目> [ { , <システム取得項目> } … ]
<ジャーナル・チェックポイント情報>:: =
CHECKPOINT <ジャーナル・チェックポイント名> [ { , <ジャーナル・チェックポイント名> } … ]
<コメント>:: =
COMMENT <コメント文>
<テーブル識別情報>:: =
<更新資源名> : <データベース名>.<スキーマ名>.<テーブル名>
<更新資源名>:: =
<英字>[{<英字または数字>}…]
<列情報>:: =
<項目名> : <列名> <データ型> [ <列編集情報> ]
<列編集情報>:: =
CONV = ( <列編集指示> [ { , <列編集指示> } … ] )
構文規則
取得定義名は、TJNL内で一意でなければなりません。
項目名は、取得定義内で一意でなければなりません。
更新資源名は、取得定義内で一意でなければなりません。
更新資源名を構成する文字数は36バイト以内です。
取得定義内で同一テーブルを複数指定する場合、更新資源名は同じでなければなりません。
取得定義内で同一列を取得対象として複数指定することはできません。
取得定義内で同一ジャーナル・チェックポイントを複数指定することはできません。
取得定義の追加および変更を行う場合、<取得対象詳細情報>を省略することはできません。
<取得対象詳細情報>には、1つ以上の<列情報>を含めなくてはなりません。
一般規則
取得定義名には、取得定義を識別するための任意の名前を指定します。
テーブル識別情報には、取得対象となるデータベースの名前、スキーマの名前、テーブルの名前を指定します。データベースの名前、スキーマの名前、テーブルの名前は、SQL Serverに定義するデータベース名、スキーマ名、テーブル名を指定します。
更新資源名に英小文字を指定した場合、英大文字に変換して扱います。
列名には、取得対象となる列の名前を指定します。列の名前は、SQL Serverに定義する列名を指定します。
データ型には、取得対象となる列のデータ型を指定します。データ型は、SQL Serverに定義するデータ型を指定します。
項目名には、取得対象列を識別するための任意の名前を指定します。
システム取得項目情報を省略した場合、システム取得項目は取得されません。
ジャーナル・チェックポイント名には、配付を要求するジャーナル・チェックポイントの名前を指定します。
ジャーナル・チェックポイント情報を省略した場合、ジャーナル・チェックポイントの配付は要求されません。
コメント文には、取得定義に対する任意の説明文を指定します。
記述形式
<取得定義名>:: =
<TJNL識別子>
<項目名>:: =
<SQL Server識別子>
<データベース名>:: =
<SQL Server識別子>
<スキーマ名>:: =
<SQL Server識別子>
<テーブル名>:: =
<SQL Server識別子>
<列名>:: =
<SQL Server識別子>
{ <TJNL識別子> [ <ワイルドカード> ] }
| <ワイルドカード>
<コメント文>:: =
-- 構文規則を参照してください
構文規則
取得定義名は、英字で始まる必要があります。
取得定義名を構成する文字数は12バイト以内です。
データベース名、スキーマ名、テーブル名、列名を構成する文字数は128文字(256バイト)以内です。
データベース名、スキーマ名、テーブル名、列名を構成する文字にピリオド(.)、コロン(:)は含められません。
データベース名、スキーマ名、テーブル名、列名を構成する文字は、照合順序の指定により、「大文字と小文字」を区別するか否かを選択することができます。このため、「大文字と小文字」を区別する場合には二重引用符(”)で囲みます。
項目名を構成する文字数は36バイト以内です。
コメント文には、二重引用符(”)で囲んだ文字列を指定します。コメント文中に二重引用符(”)を使用することはできません。
コメント文を構成する文字数は127バイト以内です。
ジャーナル・チェックポイント名を構成する文字数は32バイト以内です。
キーワードを取得定義名、ジャーナル・チェックポイント名として使用する場合には、キーワードを二重引用符(”)で囲みます。キーワードの種類については、"表B.43 キーワード一覧"を参照してください。
一般規則
ジャーナル・チェックポイント名にワイルドカードのみを指定した場合、すべてのジャーナル・チェックポイントの配付を要求します。
ジャーナル・チェックポイント名にワイルドカードを使用した場合、ワイルドカードは、任意の1文字以上の文字となり、一致するジャーナル・チェックポイントの配付を要求します。
記述形式
<トークン>::=
<非区切りトークン>
| <区切りトークン>
<非区切りトークン>::=
<SQL Server識別子>
| <TJNL識別子>
| <キーワード>
<キーワード>::=
-- 構文規則を参照してください
<SQL Server識別子>::=
<通常識別子>
| <区切り識別子>
<通常識別子>:: =
<識別子体>
| <拡張識別子>
| <各国語文字識別子>
<識別子体>:: =
<英字> [ { <下線> | <英字または数字> } … ]
<英字または数字>:: =
<英字>
| <数字>
<拡張識別子>:: =
<拡張先頭> [ { <下線> | <拡張文字または数字> } … ]
<拡張先頭>:: =
<拡張文字>
| <英字>
<拡張文字または数字>:: =
<英字>
| <数字>
| <拡張文字>
<各国語文字識別子>::=
<各国語文字> [ <各国語文字>… ]
<区切り識別子>:: =
”<識別子体>”
<TJNL識別子>:: =
{ <英字> | <数字> | <下線> | <アットマーク> } …
<区切りトークン>:: =
,| ( | ) | . | : | ;
<分離記号>:: =
{ <注釈>|<空白> } …
<注釈導入子>:: =
--
<注釈>:: =
-- 構文規則を参照してください
構文規則
すべてのトークンの後ろに分離記号を指定できます。非区切りトークンの後ろには区切りトークンまたは分離記号を指定することが必要です。
キーワードをSQL Server識別子として使用する場合には、キーワードを二重引用符(”)で囲みます。キーワードの種類については、"表B.43 キーワード一覧"を参照してください。なお、キーワードは英大文字と英小文字の区別はされません。
各国語文字識別子に指定する各国語文字のコードは、自システムの文字コード系のコードセット1(2バイト)です。
各国語文字識別子に、各国語文字の空白は含められません。
SQL Server識別子に英小文字を指定した場合、英大文字に変換して扱います。ただし、各国語文字の変換は行いません。また、各国語文字の英小文字と英大文字は等価と扱いません。
空白は、ASCIIコードの0x09~0x0dと0x20です。
注釈には、注釈導入子で始まる文字列を指定します。
注釈は、任意の場所に指定できます。注釈導入子を指定した位置から、その行の終わりまでが注釈となります。1行すべてが注釈でもかまいません。
記述形式
<数字>::=
0|1|2|3|4|5|6|7|8|9
<英字>::=
<英大文字>
|<英小文字>
<英大文字>::=
A|B|C|D|E|F|G|H|I|J|K|L|M
|N|O|P|Q|R|S|T|U|V|W|X|Y|Z
<英小文字>::=
a|b|c|d|e|f|g|h|i|j|k|l|m
|n|o|p|q|r|s|t|u|v|w|x|y|z
<拡張文字>::=
#
<各国語文字>::=
-- 構文規則を参照してください
<下線> :: =
_
<アットマーク>:: =
@
<ワイルドカード>:: =
*
構文規則
各国語文字は、日本語の文字を表します。
各国語文字のコードは、自システムの文字コード系のコードセット1(2バイト)です。
記述形式
<データ型>:: =
<文字列型>
|<各国語文字列型>
|<真数型>
|<概数型>
|<日時型>
|<透過文字列型>
<文字列型>:: =
CHAR[(<長さ>)]
|VARCHAR[(<長さ>|MAX)]
<各国語文字列型>::=
NCHAR[(<長さ>)]
|NVARCHAR[(<長さ>|MAX)]
<真数型>::=
NUMERIC[(<精度>[,<位取り>])]
|DECIMAL[(<精度>[,<位取り>])]
|DEC[(<精度>[,<位取り>])]
|INT
|SMALLINT
<概数型>::=
FLOAT[(<精度>)]
|REAL
<日時型>::=
DATE
|TIME
|DATETIME
|DATETIME2
|SMALLDATETIME
<透過文字列型>:: =
BINARY(<長さ>)
<長さ>::=
<符号なし整数>
<精度>::=
<符号なし整数>
<位取り>::=
<符号なし整数>
<時間隔先行フィールド精度>::=
<符号なし整数>
構文規則
INTとSMALLINTの精度は31と15です。
DECとDECIMALは同じ意味です。
FLOATは、指定した精度によってREALが指定されたものとみなします。精度が1~24のときはREAL(FLOAT(24))に、25~53のときにはFLOAT(53)に対応します。
長さ、精度、および位取りの最小値、最大値、および省略値を"表B.40 長さ、精度、および位取りの最小値、最大値、および省略値"に示します。
取得定義にmax指定の可変長各国語文字列を指定した場合、列編集情報のSIZEを必ず指定しなければなりません。
要素指定 | 対象項目 | 最小値 | 最大値 | 省略値 |
---|---|---|---|---|
VARCHAR(n) | n:長さ | 1 | 8000 | 1 |
CHAR(n) | n:長さ | 1 | 8000 | 1 |
NVARCHAR(n) | n:長さ | 1 | 4000 | 1 |
NCHAR(n) | n:長さ | 1 | 4000 | 1 |
NUMERIC(p,q) | p:精度 | 1 | 18 | 18 |
q:位取り | 0 | (注1) | 0 | |
DECIMAL(p,q) | p:精度 | 1 | 18 | 18 |
q:位取り | 0 | (注1) | 0 | |
FLOAT(p) | p:精度 | 1 | 53 | 53 |
BINARY(n) | n:長さ(注2) | 1 | 32000 | なし |
注1)精度を超えることはできません。
注2)バイト数を指定します。
一般規則
<各国語文字列型>については、JIS X 201の範囲のデータをジャーナルとして取得することはできません。
<透過文字列型>を指定した列は、BINARY型またはVARBINARY型としてSQL Serverに定義する必要があります。
<透過文字列型>を指定した列をBINARY型またはVARBINARY(n)型としてSQL Serverに定義した場合、SQL Serverに定義するバイト数と一致する必要があります。
<透過文字列型>を指定した列をVARBINARY(MAX)型としてSQL Serverに定義した場合、データ長が取得定義に指定した長さ以下のデータのみジャーナルとして取得されます。
記述形式
<列編集指示>:: =
SIGN(OFF) | SIZE(長さ)
<長さ>::=
<符号なし整数>
構文規則
長さの最小値、最大値を"表B.41 長さの最小値、最大値"に示します。
属性 | データ型 | 最小値 | 最大値 |
---|---|---|---|
固定長文字列 | CHAR | 1 | 32000 |
可変長文字列 | VARCHAR | 1 | 32000 |
各国語可変長文字列 | NVARCHAR(MAX) | 1 | 16000 |
一般規則
列編集指示の指定可否を"表B.42 列編集指示の指定可否"に示します。
属性 | データ型 | 列編集指示の指定可否 | |
---|---|---|---|
SIGN(OFF) | SIZE(長さ) | ||
固定長文字列 | CHAR | × | ○ |
可変長文字列 | VARCHAR | × | ○ |
固定長各国語文字列 | NCHAR | × | × |
可変長各国語文字列 | NVARCHAR | × | ○(注1) |
外部10進数 | NUMERIC | ○ | × |
内部10進数 | DECIMAL | ○ | × |
単精度浮動小数点数 | REAL | × | × |
浮動小数点数 | FLOAT | × | × |
2進整数 | SMALLINT | × | × |
INT | × | × | |
日付、時刻 | DATE | × | × |
TIME | × | × | |
DATETIME | × | × | |
DATETIME2 | × | × | |
SMALLDATETIME | × | × | |
透過文字列 | BINARY | × | × |
注1) NVARCHAR(MAX)のみ指定可能です。
○:指定可
×:指定不可
記述形式
<システム取得項目>:: =
<全システム取得項目>
| { <更新資源名>|<格納構造名>|<時刻>|<トランザクション識別子>
| <トランザクション状態>|<DB種別>|<DB操作> }
<全システム取得項目>:: =
TJNLSYSALL
<更新資源名>:: =
TJNLRESOURCE
<格納構造名>:: =
TJNLSTORAGE
<時刻>:: =
TJNLTIME
TJNLTRNID
<トランザクション状態>:: =
TJNLSTS
<DB種別>:: =
TJNLDBKIND
<DB操作>:: =
TJNLDBOP
一般規則
<全システム取得項目>を指定した場合、以下の順序で各システム取得項目が展開されます。
a) <更新資源名>
b) <格納構造名>
c) <時刻>
d) <トランザクション識別子>
e) <トランザクション状態>
f) <DB種別>
g) <DB操作>
システム取得項目と対応するデータ属性については、"B.6 システム取得項目のデータ型対応表"を参照してください。
記述形式
<符号なし整数>::=
<数字>…
"表B.43 キーワード一覧"にキーワードの一覧を示します。
【A】 【B】 【C】 【D】 【E】 【F】 | 【G】 【H】 【I】 【J】 【K】 【L】 【M】 【N】 【O】 【P】 | 【R】 【S】 【T】 【U】 【V】 【W】 【X】 【Y】 【Z】 |