I have an application that uses a view on a SQL Server 2008 R2 instance. This view actually queries a linked server (SQL Server 2008) that has replicated data from our main ERP database. Yesterday, we began experiencing some timeout on the application that uses this view and we discovered that the view was taking over 1 minute to complete (before this it was a matter of seconds).
Here's what we know:
- Running the query on the linked server directly returns results in a matter of milliseconds.
- Creating a view on the linked server, and then having the view on the first server simply query the view on the linked server restores performance to its original state. (view source), (workaround)
- When running the query on the first server, I notice that there are quite a few
OLEDB
waits (usingsp_WhoIsActive
). Because of this, I decided to check the linked server while the query was running (on the first server). I noticed that the primary wait wasASYNC_NETWORK_IO
.
Because of this, I am inclined to believe that there is an issue with either the network, or the configuration on my linked server. I am not sure that there is anything wrong with it, but I am posting it too.
What other things should I be looking at to help me to get to the root cause of this?
EDIT
Query Plan: https://i.sstatic.net/muSUR.png
IO Stats: https://i.sstatic.net/VVoLf.png
Query Columns: https://i.sstatic.net/8tzWk.png
Top Operations: https://i.sstatic.net/bAOh5.png
Plan Tree: https://i.sstatic.net/3AWBk.png