I recently had a problem with client inventory data not being present in the SCCM database. I was making a query to find machines running Windows XP with Service Pack 3, and it only reported back 4 or 5 clients, even though I knew that a lot more had the service pack installed.
I checked the logs on some of my clients and they seemed to report both hardware and software inventory just fine, and sent it to my management point. I checked the logs on my SCCM server and every time i recieved the inventory report from clients I got an SQL error saying that the rows in my table could not be updated. This lead me to believe that the client had never been in the table, and as suspected, my OperatingSystem table (the table that contains data about a client operating system, and in this case what service pack is installed) only had a few machines present. Somehow my management point had stopped inserting data into the tables.
I resolved this issue simply by removing and re-installing my management point role on my SCCM server, but it lead to several hours of head-scratching!