私たちはあなたの例に似た多くの仕事をしました。 SQLの差し止めについては心配していません。これは、ピボットされるデータを完全かつ完全に制御できるためです。悪意のあるコードがETLを介してデータウェアハウスに侵入することはありません。
いくつかの考えとアドバイス:
- nvarcahr(500)列でピボットする必要がありますか?私たちのものはvarchar(25)または数値であり、そこから有害なコードを忍び込むのはかなり難しいでしょう。
- データチェックはどうですか?これらの文字列の1つに「]」文字が含まれている場合、それはハッキングの試みか、とにかく爆発するデータのいずれかであるようです。
- セキュリティはどの程度堅牢ですか? Maloreyが(直接またはアプリケーションを介して)データベースにハッキングを忍び込ませないように、システムはロックダウンされていますか?
はぁ。関数QUOTENAME()を覚えるには、それをすべて書く必要がありました。簡単なテストでは、そのようにコードに追加すると機能することが示されているようです(一時テーブルが削除されるのではなく、エラーが発生します):
SELECT
@columns =
STUFF
(
(
SELECT DISTINCT
', [' + quotename(ColumnB, ']') + ']'
FROM
#PivotTest
FOR XML PATH('')
), 1, 1, ''
)
ほとんどの場合、値を[ブラケット]する必要があるため、これはピボット(およびピボット解除)の状況で機能するはずです。