I have so many cubes and I never saw this error. Every one of my cubes was processing on the same schedule they always have. Users are now getting error: “The operation Was canceled because of locking conflicts” My processes full are having this and so are the users. Whats going on? My users are mostly SSAS Tabular so all users are “read only” as far as I was concerned they can never make an exclusive lock” but they are getting a “read” lock and some users started getting “A lock could not be obtained” Whats going on?

It pretty simple. First all my jobs were every hour from 6 am to 7 pm. So every hour on the hour all jobs will run. Starting off it was one ProcessFull per database but as time went on PowerPivot daily refresh in SharePoint got moved to SSAS Tabular Server hourly ProcessFull which then became partitioned and then “we need realtime” so every 10 min.

Whats happening?

Processing (process partition reading in data and calculating) It needs to swap out old with new partition but will wait till long running queries are finished. Its a write lock

Read Data (Users making a read lock that will block write till finished)

New Read Locks (Will wail on write locks till released) Users get a hourglass

This is where locking occurs. SSAS Looks at the read locks and will wait till timeout threshold has been reached. It will then timeout the users. The users were making very small MDX queries in the beginning but now they are getting very complex by drilling down to many details that are causing a bigger query plan and are blocked by the update. After a ProcessFull the cache plan has to update so only the first user running the query is slow. The rest of the users get a fast result leaving me trying to analyze random users

First: stagger all processing 7:05, 7:10 for start times

Next: Use <Parallel> tag

This will process all objects in same thread and do one commit

Finally: the  Managers must make a tradeoff on ProcessFull reduced or Use ProcessAdd . ProcessAdd adds a small partition that adds a small footprint that does not lock your main partition.  ProcessAdd is more complicated as any updates must use a delta script such as a fact of 8 with an new change to 3 must delta process -5 and then ProcessFull to true up.

This is a simple analysis but if the problem continues you must look at using process add. If your database is in a star snowflake schema process add is very simple. you have a fact of $3000 and an update went through -$200 you add a new fact of -$200 and the sum is $2800 and then do a process merge at end of day. Dimensions still have to processed full.

There is a much more detailed description here