The msi database is not a system file, so sfc won't find anything. The only solution I know of is reinstalling windows. I'm sure the problem is fixable (so you may want to contact M$ support), but I've never seen it myself, so I never had the chance to debug it. Without that, I cannot invent a solution unfortunately.
If you happen to be a geek, you may want to debug it yourself. What files, registry entries etc. it tries to reach, what function call fails etc. You may even hunt it down.
CPU: AMD Phenom II X4 810 @ 3250MHz | RAM: Kingmax 2x2GB DDR2 800 @ 833MHz| MoBo: MSI K9A2 CF v1.0 (BIOS: 1.D)| GPU: Asus HD 6850 1024MB (DirectCu) @ 850/1150MHz | Display: L24FHD | PSU: PC Power & Cooling Silencer 750 Quad | OS: MS Windows 7 Pro x64
CPU: Pentium 4 Northwood S478 @ 3200MHz | RAM: 1,5GB DDR 400| MoBo: Gigabyte GA-8S661FXMP-RZ | GPU: ASUS Radeon X1650 Pro 256MB | Display: Dimarson 19" CRT | PSU: Noname 400W | OS: changing twice every week...