Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
松本 奈紗
Support Engineer
皆さん、こんにちは。 BI Data Platform サポートチームの松本奈紗です。
今回の投稿では、Azure Data Factoryを利用してAzure SQL DataWarehouse にデータをコピーする際に発生するエラーのうち、メッセージから判断がつきにくいものがありますので、エラーの原因を見つけるために確認すべき点をご紹介いたします。
また、今回はイメージがつきやすいように、以下のようなサンプルを用いて、エラーの対処策をご紹介いたします。
[ サンプルの前提]
Azure Data Factoryを利用して、CSVファイルをSQL Server Management Studio(SSMS) に接続されたAzure DataWarehouse へコピーします。
Test.csv
Number, Word, Letter
1, test1, A
2, test2, B
Azure SQL Data Warehouse
SSMSでのテーブル定義
CREATE TABLE dbo.TestTable(
Number int NULL
,Word char(1) NULL
,Letter char(1) NULL
);
[ テスト]
上記のような前提でAzure Data Factory (V2)からデータをSQL Data Warehouseにロードしてみると、同じエラーが確認できるかと思います。
■エラーの確認方法
Azure Data Factory (V2)を利用して発生したエラーを確認する場合、パイプラインのモニター画面を確認ください。
- ADFのモニター画面からエラーの詳細画面を開きます。
- 以下のエラーの出力を確認できます。
Error Message
Activity Copy_5ua failed: ErrorCode=FailedDbOperation、'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=次のエラーにより、データベースの操作が失敗しました: 'PdwManagedToNativeInteropException ErrorNumber: 46724, MajorCode: 467, MinorCode: 24, Severity: 20, State: 2, Exception of type 'Microsoft.SqlServer.DataWarehouse.Tds.PdwManagedToNativeInteropException' was thrown.',Source=,''Type=System.Data.SqlClient.SqlException,Message=PdwManagedToNativeInteropException ErrorNumber: 46724, MajorCode: 467, MinorCode: 24, Severity: 20, State: 2, Exception of type 'Microsoft.SqlServer.DataWarehouse.Tds.PdwManagedToNativeInteropException' was thrown.,Source=.Net SqlClient Data Provider,SqlErrorNumber=100000,Class=16,ErrorCode=-2146232060,State=1,Errors=[{Class=16,Number=100000,State=1,Message=PdwManagedToNativeInteropException ErrorNumber: 46724, MajorCode: 467, MinorCode: 24, Severity: 20, State: 2, Exception of type 'Microsoft.SqlServer.DataWarehouse.Tds.PdwManagedToNativeInteropException' was thrown.,},],'
■上記エラーメッセージが発生する可能性と対処策
上記のようなエラーが発生した場合、出力先であるSQL Data Warehouseのテーブルのデータ長が、Azure Data Factory(V2) から受け渡されるデータと合わない(受け側のサイズが不足している)可能性がないかを確認してみてください。
この場合、SQL Data Warehouseのテーブルのデータ長とAzure Data Factory(V2) から受け渡されるデータ長を確認し、これらのデータ長を合わせることで、エラーに対処できます。
今回のサンプルの場合、ADF側では、以下のようにSSMSを使用してSQL Data Warehouseのテーブルのデータ長を確認し、データ長を修正することでエラーに対処できます。
- SSMSにおいて、SQL Data WarehouseのTestTableのWordカラムがchar(1)となっていることを確認できます。
char(1)は1バイトの文字を格納することを想定した型であり、Azure Data Factory(V2) から受け渡されるCSVファイルのWordカラムのデータは”test1”,”test2”のように1バイトではないため、データサイズが不足していることが確認できます。
- ここで、次のクエリを実行し、SSMSに再接続すると、以下のようにTestTableのWordカラムがchar(255)となっていることが確認できます。
“ALTER TABLE dbo.TestTable ALTER COLUMN Word char(255) NULL ;”
char(255)型は255バイト分の文字コードを格納できますので、CSVファイルのWordカラムのデータは”test1”,”test2”と255バイト以内であるため、データ長は足りていることが確認できます。
- Data Factoryのパイプラインをもう一度実行すると、モニター画面のStatus欄にSucceedが表示され、エラーが解消されたことが確認できます。