Исключение тайм-аута в SQL-сервере при массовой вставке данных в SQL-сервер из c # - PullRequest
0 голосов
/ 26 сентября 2019

Я конвертирую данные в 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 #

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...