Я конвертирую данные в Xml в коде C #, так как этот код дает мне гибкость.В SQL я конвертирую XML в datatable и затем вставляю в таблицу транзакций.Для менее чем 500 строк он работает успешно, но для более чем 500 записей наступает исключение тайм-аута.
Declare @pINPUT_STRING Xml = '<Row> <SNo>1</SNo> <Date>18-08-2019</Date> <Voucher_No>156422</Voucher_No> <From_Branch>HO-S-PO 8534</From_Branch> <Main_Product>CGD-S-PVO 2130</Main_Product> <Product>AMAZON SPEAKER G19ECHO DOT 3RD GEN (GREY)</Product> <Serial_No>1</Serial_No> <Receivable_Quantity>Audio</Receivable_Quantity> <Penidng_Quantity>1</Penidng_Quantity> <Remarks>1</Remarks> </Row>';
SELECT * INTO #TEMP_GT FROM DBO.[FN_LOOKUP_GODOWN_TRANSFER](@pINPUT_STRING) FGT --Issue In This Row Timeout Exception
DECLARE @Inserted_total_count int = (SELECT Count(*)FROM #TEMP_GT FGT LEFT JOIN LOOKUP_GODOWN_TRANSFER LGT ON FGT.Voucher_No=LGT.VOUCHER_NO AND FGT.Product=LGT.PRODUCT AND FGT.Serial_No=LGT.SERIAL_NO Where ISNULL(LGT.VOUCHER_NO,'') = '')
DECLARE @totalcount INT =0;
SET @totalcount = 0; (SELECT Count(*) from #TEMP_GT)
INSERT INTO LOOKUP_GODOWN_TRANSFER
(DATE,VOUCHER_NO,BRANCH,FROM_BRANCH,MAIN_PRODUCT,PRODUCT,SERIAL_NO,RECEIVABLE_QTY,PENDING_QTY,REMARK,CREATED_BY,CREATED_ON,
MODIFIED_ON,MODIFIED_BY,SERVER_LOGTIME,WAREHOUSE_ID,IS_ACTIVE)
SELECT
convert(varchar, convert(date, FGT.Date, 105), 101) as Date,FGT.Voucher_No,FGT.Branch,FGT.From_Branch,FGT.Main_Product,FGT.Product,
FGT.Serial_No,CAST(FGT.Receivable_Quantity as int),FGT.Penidng_Quantity,FGT.Remarks,
FGT.CREATED_BY,
GETDATE(),
GETDATE(),
FGT.CREATED_BY,
dbo.SNCLOCK(),
FGT.WAREHOUSE_ID
,1
FROM
#TEMP_GT FGT --DBO.[FN_LOOKUP_GODOWN_TRANSFER](@pINPUT_STRING) FGT
LEFT JOIN LOOKUP_GODOWN_TRANSFER LGT ON FGT.Voucher_No=LGT.VOUCHER_NO AND FGT.Product=LGT.PRODUCT AND FGT.Serial_No=LGT.SERIAL_NO
Where
ISNULL(LGT.VOUCHER_NO,'') = ''
Любая идея, что я могу использовать в качестве альтернативного способа массовой вставки в базу данных из c #