AllowAggregateParameters
QueryPassthrough が有効になっているときに、パラメータで生の集計を使用できるようにします。
データ型
bool
デフォルト値
false
解説
このオプションは、QueryPassthrough 経由でダイレクトクエリを使用する場合の文字列パラメータの処理方法に影響します。例えば、このクエリを考えてみましょう:
INSERT INTO proj.data.tbl(x) VALUES (@x)
デフォルトでは、このオプションは無効になっており、文字列パラメータは引用符で囲まれSQL 文字列にエスケープされます。つまり、任意の値を文字列パラメータとして安全に使用できますが、パラメータを生の集計値として使用できないことも意味します。
/* * If @x is set to: test value ' contains quote * * Result is a valid query */ INSERT INTO proj.data.tbl(x) VALUES ('test value \' contains quote') /* * If @x is set to: ['valid', ('aggregate', 'value')] * * Result contains string instead of aggregate: */ INSERT INTO proj.data.tbl(x) VALUES ('[\'valid\', (\'aggregate\', \'value\')]')
このオプションを有効にすると、文字列パラメータはクエリに直接挿入されます。つまり、生の集計をパラメータとして使用できますが、すべての単純な文字列をエスケープする必要があることも意味します。
/* * If @x is set to: test value ' contains quote * * Result is an invalid query */ INSERT INTO proj.data.tbl(x) VALUES (test value ' contains quote) /* * If @x is set to: ['valid', ('aggregate', 'value')] * * Result is an aggregate */ INSERT INTO proj.data.tbl(x) VALUES (['valid', ('aggregate', 'value')])