私はクエリストアに対して、次のクエリで働いている:SQL Serverクエリストア:[sys.query_store_query_text]。[query_sql_text]が切り捨てられていますか?
SELECT
TOP 100
qp.last_execution_time [qp__last_execution_time],
qt.query_sql_text,
len(qt.query_sql_text) sql_length,
round(rs.avg_duration ,5) avg_duration
,max_rowcount,avg_rowcount,last_rowcount
FROM
sys.query_store_plan qp
INNER JOIN sys.query_store_query [q] ON qp.query_id = q.query_id
INNER JOIN sys.query_store_query_text [qt] ON q.query_text_id = qt.query_text_id
INNER JOIN sys.query_store_runtime_stats [rs] ON qp.plan_id = rs.plan_id
WHERE
order by len(qt.query_sql_text) desc
私は気づい何が、[query_sql_text]が切り捨てられているようだということです例えば、典型的な声明はで終了します:
CAST('20170920 00:00:00' AS datetime),CAST('20140701 00:00:
おそらく関連:
この場合、SQLは、電源BIによって生成されています。
テキストが切り捨てられたとき、len(qt.query_sql_text)は同じ値で最大値になりません。
SSMSの結果ペインからメモ帳にコピー/貼り付けしてSQLを表示しています。
SQLバージョン:マイクロソフトSQL Azureの(RTM) - 12.0.2000.8 2017年8月29日午後01時06分11秒
私は、SQL ServerはSQLを切り捨てることを他のいくつかの "システムテーブル" に思い出します。
これは質問です。[sys.query_store_query_text]。[query_sql_text]がSQL Server自体によって切り捨てられることがあるかどうかは誰でも分かりますか?
クライアントアプリケーションで起こっているトランケーションは、完全な有効なSQL文をSQL Serverに送信する必要があるため、それ以外の方法では実行できません。しかし、len(query_sql_text)の違いは、列の長さの制限を超えることを排除します。
ここで何が起こっているのでしょうか?
返された結果を切り捨てるSSMSです。 [オプション] - > [クエリ結果] - > [SQL Server] - > [結果をグリッド/テキストにする]、[最大文字数]オプションで最大長を確認できます。 –
結果をGridにするために、私は非XMLデータ= 65535(それはそれが行くほど高い)です。しかし、切り詰めの場合のlen(qt.query_sql_text)は61862と61771のような値を持ちます。切り詰めを実行するSSMSの場合、切り捨てられたSQLの長さは同じではないでしょうか? – tbone
わかりません。提案されているようにXMLにキャストしてみてください。そうであれば、それはSSMSの切り詰めです。 –