現象
SQL Server 2019 CU6 以降、Create External Table の定義が拡張され、Rejected_Row_Location パラメーターが含まれるようになりました。 この値は、Error Files と Rejected Rows が書き込まれる外部データソース内の場所を表します。 このオプションは、Hadoopタイプの外部データソースでDELIMITEDTEXTファイル形式を使用する外部テーブルでのみ使用できます。
CREATE EXTERNAL TABLE [dbo].[Reject_Example]
(
[Col_one]TINYINT NULL,
[Col_two]VARCHAR(100) NULL,
[Col_three]NUMERIC(2,2) NULL
)
WITH
(
DATA_SOURCE = EDS_Reject_Row
,LOCATION = '/Read_Directory'
,FILE_FORMAT = CSV
,REJECT_TYPE = 値
,REJECT_VALUE = 100
,REJECTED_ROW_LOCATION='/Reject_Directory'
)
データが読み込まれるとどうなりますか?
ユーザーが前のテーブルでテーブルの選択として作成 (CTAS) を実行すると、PolyBase は、Rejected_Row_Locationに外部データ ソースにディレクトリを作成します (存在しない場合)。 "_rejectedrows" という名前の子ディレクトリが作成されます。アンダースコア (_) 文字を指定すると、location パラメーターで明示的に名前を指定しない限り、他のデータ処理のためにディレクトリが確実にエスケープされます。 このディレクトリ内には、YearMonthDay-HourMinuteSecond の形式 (20180330-173205 など) のロード送信時刻に基づいてフォルダーが作成されます。 このフォルダーには、_reason ファイルとデータ ファイルの 2 種類のファイルが書き込まれます。
理由ファイルとデータ ファイルの両方に、CTAS ステートメントに関連付けられた queryID があります。 データと理由は別々のファイル内にあるため、対応するファイルには一致するサフィックスが付きます。
状態
Microsoft は、「適用対象」セクションに記載されている新機能を追加しました。
解決策
この問題は、SQL Server 用の次の累積的な更新プログラムで解決されています。
SQL Server の累積的な更新プログラムについて:
SQL Server 用の新しい累積的な更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正プログラムが含まれています。 SQL Server の最新の累積的な更新プログラムを確認してください。
参考資料
マイクロソフトでソフトウェア更新プログラムの説明に使用する用語集を参照してください。