Azure Data Factory とストアド プロシージャに問題があります。
入力データのシンクとして SP を設定しました。
"sink": {
"type": "SqlSink",
"sqlWriterStoredProcedureName": "spAddProducts",
"storedProcedureParameters": {
"stringProductData": {
"value": "str1"
}
},
実行後、約 200k レコードを処理する必要がありますが、限られた数の行 (約 10k) を処理した後、エラーが発生しました。
Copy activity met invalid parameters:
ErrorCode=InvalidParameter,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,
Message=The value of the property '' is invalid: 'The SqlParameter is already contained by another
SqlParameterCollection.'.,Source=,''Type=System.ArgumentException,
Message=The SqlParameter is already contained by another SqlParameterCollection.,Source=System.Data,'.
SPコード:
CREATE PROCEDURE spAddProducts @DimProducts [dbo].[ProductsType] READONLY, @stringProductData varchar(256)
AS
BEGIN
MERGE [dbo].[DimProducts] AS tpr
USING @DimProducts AS spr
ON tpr.ID = spr.ID
WHEN MATCHED AND (tpr.Name <> spr.Name OR tpr.NameInternational <> spr.NameInternational OR tpr.ProductType <> spr.ProductType) THEN
UPDATE SET tpr.Name = spr.Name, tpr.NameInternational = spr.NameInternational, tpr.ProductType = spr.ProductType
WHEN NOT MATCHED THEN
INSERT (Name, NameInternational, ProductType, ID)
VALUES(spr.Name, spr.NameInternational, spr.ProductType, spr.ID)
;
END