We recently migrated from SCCM 2007 R3 to SCCM 2012. So far we have ca. 2500 clients in SCCM 2012. SCCM is running on a virtual server (Windows 2008 R2 on Hyper-V with 8 GB RAM), and the SQL database is running on a physical server (as separate instance of SQL Server 2008 R2 with latest SP/CU).
The SQL instance has 48 GB RAM assigned (when it is not running, the server has ca. 3 % CPU load and 48 GB free RAM). I can't see any reason for performance issues.
Still, the SQL server can't keep up with the requests from SCCM. When I boot the SCCM server, queues queries pile up. After few minutes there are ca. 500 queries in the queue and SQL stops responding / accepting connections.
I traced SQL connections and can't see anything that would not be legit. Lots of status messages are written, hardware inventory updated etc. - looks normal to me. Still, it seems that the easiest queries take ages (or at least SQL thinks so).
One weird thing: As a test I enabled the "query governance" option with a setting of 300 (meaning that queries that likely take more then 300 seconds should be refused). With this setting SQL refused all queries - a query that selects ONE row was refused because the calculcated runtime was 8409 seconds - though (after removing the query governance setting) is actually ran only few milliseconds.
Is there anything I could tune? Can it be that something is queued on SCCM side that floods my SQL?