9 Hours for 5 Million rows is way, way, way too long unless your result set has an (unreasonably) large number of columns or that SQL Server lives on a poor network and it takes a long time to move rows over the wire because of a small pipe.
For a ~5M row / ~ 30 column resultset from a local SQL Server, I can create an extract in about 4-6 minutes.
Have you tried extracting a small subset of data (100-200K rows) to see if it still takes a really long time? Create a data source filter on the source you're trying to extract so that only 1 row is returned...then try again. Is your query unnaturally slow?
I'm having a the same issue with a very similar setup (though our server installs could be very different). It's taking 15 minutes to refresh a 300K rows of data. I'm posting a support case later today. I'll let you know what they say.