1
votes

I have created a Flow to update the GUID(the unique identifier of CDS entity records) into an SQL Server table From CDS whenever a new record is created in CDS. The flow is working fine If I create records one by one. But If I import multiple records(around 3000 records) from SQL to CDS using Dataflows, then I am getting the below deadlock error in Flows.

"Transaction (Process ID 74) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction."

The dataflow refreshes the data on a scheduled basis. So, I could not resubmit the failed runs every time.

How to get rid of this deadlock issue? Or Is there any other approaches to update the SQL table in an efficient way?

I tried options like the degree of parallelism(10 records), retry policy. But no use. If I reduce the parallelly running records to 1, then it is running slowly and taking more than 1h for updating 1000 records.

2

2 Answers

0
votes

If your query is a deadlock victim, you can create extended event session to capture details about this event. Then, having the deadlock graph you will find the real cause of your issue.

The graph will show you exactly what's the resource lock causing it and the involved statements.

0
votes

you can try to change isolation level of your transactions in your connection with

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

to learn more https://docs.microsoft.com/en-us/sql/connect/jdbc/understanding-isolation-levels?view=sql-server-ver15