私のアプリケーションはデータを読み込むためのSQLスクリプトを実行し、読み込んでいるファイルに問題がある場合、ファイルがロードされない理由に関する有用な情報を含まない最後のエラーだけをログに記録します。TRY..CATCHに複数のエラーを記録するにはどうすればいいですか?
例コード:
BEGIN TRY
BULK INSERT MyTableName
FROM 'C:\MyFilename.txt'
WITH
(
FIELDTERMINATOR = '|',
ROWTERMINATOR = '\n',
TABLOCK,
MAXERRORS=0,
ERRORFILE = 'C:\MyFilename_Errors.log'
)
;
END TRY
BEGIN CATCH
INSERT INTO MyErrorLog
SELECT ERROR_MESSAGE() as Issue
, ERROR_LINE() as IssueRowNum
;
END CATCH
このスクリプトでは、第3の誤りのために[MyErrorLog]にエントリを作成する(下記参照)。そして、ログファイルには、どのような分野何行ではなく、私に教えてくれます:30539ファイルは1910820 ERRORFILEが0オフセットオフセット
行 - ここHRESULT 0x80004005の
は、すべての3行をだ場合の内部I「THROW」のエラーCATCH:
メッセージ4864、レベル16、状態1、行3バルクロードデータ変換エラー (指定されたコードページの型の不一致または無効な文字) 行1、列5(のMyField)のために。
メッセージレベル7399、レベル16、状態1、行3 のOLE DBプロバイダ "BULK"がリンクされたサーバー "(null)"がエラーを報告しました。プロバイダは、エラーについての情報を に与えませんでした。
メッセージ7330、レベル16、状態2、行3リンクサーバー "(null)"のOLE DB プロバイダー "BULK"から行をフェッチできません。
最初のエラーメッセージと2番目のエラーメッセージをキャプチャするにはどうすればよいですか?
私はほとんど肯定的です最後のメッセージを取得するキャッチを試してください。 – scsimon
はい、それは私の問題です。私も最初のエラーが必要です。 – VenerableAgents