unofficial microsoft.public.money FAQ and A
[ Home ]
Q) I think my file has been corrupted. How do I tell? What do I do then?
A) "Corruption" of user data files is a popular topic of the newsgroup. Sooner or later, it seems, every Money user will experience this. But there has been lots of confusion over what is and isn't corruption, and there have been attempts to blame non-specific "corruption" for lots of things that probably aren't "corruption" induced. Many problems blamed on corruption are not corruption related at all and some that are may not be able to be solved with the available file repair procedures and will require different techniques to fix if they are even fixable. For the readers who haven't experienced corruption yet and are getting bored and are about to skip the rest of this answer, remember this one thing: the one sure way out of these problems is having backups that really are and that have, in turn, their own backups. Further, if you are still reading, remember that a corrupt file can generate a corrupt backup--so be sure and have multiple generations of backups available.
In general, "corruption" refers to problems in the logical integrity of the data file. Corruption does not mean the operating system reports data errors reading your file. Though that is a form of corruption, it's not what we are talking about here. The corruption we are talking about are cases where the data in your file is read and written acceptably by the operating system but doesn't make sense or isn't consistent to Money itself. In general, a Money file that produces unexpected results or improper behavior of the application which a) cannot be reproduced with a new Money file or the sample file, and b) can be reproduced on different systems using the same Money file, is likely corrupted.
With this in mind, your troubleshooting process should follow something like this when you are facing possible file corruption.
1. Create a new file or open the Sample Money file.
2. Try to reproduce the issue.
3. If you can reproduce the issue, the problem is most likely not corruption. It could be your Money installation, IE installation, or an OS/system problem. So start with the easiest of these: Remove and re-install the Money application to a new folder. Next, repair/remove/reinstall Internet Explorer. (This will not be so easy on many of the newer operating systems--and it's generally less likely to be an issue on the newer ones.) Always test after every step.
4. If at all possible, test your Money file on a different system with the same version and localization of Money installed.
5. If you cannot reproduce the issue in a new file, and especially if the problem moved with your data file to a different system, you may be looking at a corruption issue. Here are some indications and errors that suggest possible corruption problems:"Money cannot create a temporary file in C:\Windows\Temp"
"Money cannot locate '<file path and name>' or cannot open it, possibly because it is a read-only file. You can change the read-only attribute in the Windows Explorer. If you have chosen the correct file and it cannot be accessed, you will need to open your most recent backup file."
"<Path>/<file name> is corrupted or is not a Money data file. Make sure you are opening a file with an .MNY extension. If you have chosen the correct file and it could not be accessed, you will need to open your most recent backup file to access your data."
If you attempt to convert a Money data file from an earlier version, and you receive the following error message:
"There has been an error reading or writing to the disk."If you attempt to create a new file, you receive several error messages, beginning with the following error message:
"The new file '<Path>/<file name>' cannot be created. Please make sure that the new file name does not contain any of the following characters: \/:*?"<>|. Also, make sure the new file is being created on a disk that is not write-protected and has sufficient room to store the new file." (This one is normally not file corruption, though.)When you click OK, you may receive the following message:
"Not enough memory is available. If you have several applications open at the same time, you might need to close one of them before starting Money." (This also is normally not corruption.)When trying to enter or delete a transaction or go into a particular area of Money, you receive the error (quite common--these are the "trinity" of corruption indicators):
"This operation cannot be performed."
"This transaction cannot be entered."
"This transaction cannot be deleted."Checks are available to print but there are no "Print checks" prompts. This is common enough that it has its own FAQ and an MSKB reference to boot. See the question "I see checks to be printed. Money says there aren't any. What gives?"
Very whacko balances (the trillion dollar balance syndrome).
Balances disagree from one place to another in the app. These are frequently pilot error and there was a bug that produced this, depending on reconciled/unreconciled register view, back in M01, which was fixed with a patch. But some of these cases have turned out to be corruption.
Cash flow fails to display in M02. This one also has its own FAQ entry. See "How come my cash flow forecast refuses to display?"
Other indications of corruption have included sudden radical degradation in performance, transactions that refuse to be edited or marked as reconciled/cleared (usually you’ll get the "operation cannot be performed" message), and application crashes at repeatable places and/or when doing repeatable things with the data. Reports that refuse to display and/or crash the application can be caused by corruption or can be caused by problems with, say, printer or video drivers. Recreating your favorite report from the basic report and/or playing around with the customization settings to see if there are some data sets that work and others that cause the problem should isolate problems with reports.
Cases that involve the application crashing upon starting may come down to a problem with the application itself or with the most recently opened data file--which is exactly the file Money will try to open if you just start the application rather than opening a specific Money data file. See "Money crashes when I first start the application or open my regular data file. How come? What next?"
Finally, there are many things that are not corruption but are occasionally blamed on corruption. Some examples follow. Reports that don't show what you want may very well be customized incorrectly. Register views that are not in the order you want may be sorted by something you don't recognize. When Money is generally slow, it is likely just Money being generally slow. When Budget Planner produces results you don’t understand, it’s likely just Budget Planner’s way of reminding us that some future version of Money will be able to claim improved budgeting among its features. Problems importing statements or with the statement data itself are in all likelihood problems with the data the bank provided. If you have any doubts about what is normal--if undesirable--behavior and what may be "corruption," the newsgroup is probably a better place to start than the repair tools.
So, if you are to the point where you've determined that your file is likely corrupted and are ready to journey down the road of file repair, here are your options and some recommendations for how to go about the process, sorted by order of complexity and potential loss of data:
- There are two file repair tools provided by Microsoft for Money.
- Sometimes you can unwind what you were doing back to when you first saw the problem and identify an associated transaction or scheduled bill that created the problem and exhibits the signs of corruption. From here you can proceed to:
- Binary search identification and elimination
- Revert to a backup
- Other voodoo
- Export/Import (the "start almost over" method)Details on the repair tools:
File Salvage (the "msmoney -s" startup parameter or, beginning in M04, File|Repair Money File|Quick File Repair (or Standard File Repair???)): This repair utility checks the data integrity to make sure the data is self-consistent. It does not check that the data is correct; it only checks that the validation rules that are supposed to be applied on data entry are indeed being applied.
Super Salvage (salv.exe): This repair will work with any version of Money but will NOT work on backup files. It does low level checking for file integrity. It checks the format and stability of the file itself. It does NO data checking. Salv provides 2 different levels of checking; each just goes deeper in its checking than the previous. (Some older versions supported three levels of checking but level 3 has been removed, apparently because it caused more harm than good for many users.)
Guidelines for use of the repair tools:
msmoney -s (or File|Repair Money File|Quick File Repair (or Standard File Repair???) in recent versions)
When running Money 99 and above, always run File Salvage first. This usually works if you go to Start, Run and type "msmoney -s" without quotes. Be sure that the data file opens displaying the message "Repairing file…working" or the repair is not being performed. For more information on running this utility, see item # 182608 in the MSKB.
salv.exe
This tool works on versions 98 and later. Although it is available on the Money CDs in the PSS folder in versions 2001 and later, you can download it (and should to be sure that you are running the latest and greatest version of the utility). See item # 274584 in the MSKB to download the current version and get more information.
General information on file repair tool processes:
A good course of action to use when encountering a file corruption issue and attempting repair with these tools is to:
0. Make copies of your file before you start mucking around. If any of this makes your situation worse, you can always start over on one of the copies. This is general good practice when things get sporty with any data file. Work on the copies. If you solve your problem in a copy, delete the original and rename the copy.
1. Stop the background Money tools so that they are not accessing your file. These tools are Background Banking, MoneySide and MoneyExpress.
2. Run the file salvage (-s)
3. Check the file to verify that the issue is still present
4. Run a Level 1 of salv.exe
5. Check the new, salvaged file
6. Run a Level 2 of salv.exe on the new file from step 3
7. Check the new, salvaged file
8. If the salv.exe is unsuccessful at any point, run the file salvage (-s) again on the last new successfully salvaged file from steps 3, 5, or 7
9. Archive the file to remove old transactions (not recommended) or just archive without removing transactions.If using versions of Money prior to 99, press CTRL + ALT + DEL and select Task Manager (NT, Win2K, WinXP) or bring up the Close Program box directly (WinMe and prior versions of "dirty Windows"). Highlight Microsoft Money and click End Task to terminate the application and close your data file. When you reopen the file, Money should tell you that the file was not closed properly and that it needs to be repaired.
One important piece of advice regarding the file repair tools: don't assume they actually repaired anything, no matter what messages they spit out. It is very important in this context to find repeatable ways to manifest a symptom of corruption so that you can test that you actually fixed something that mattered before declaring victory and moving on, potentially to wind up back in the same place in a matter of days or weeks. One poster to the newsgroup, Bob Arge, struggled for over a year with what seemed to be a number of separate and serial corruption incidents. When Bob finally gave up and moved his data to Quicken, he had a problem with account imbalances. To make a very long story short, a transfer from one account to another from almost two years back was somehow lost in the Money ozone--there, but not showing up in the registers. This kind of thing is a classic corruption symptom. All of Bob's effort and repeated use of the repair tools never actually solved the root corruption problem, apparently. What seemed like a series of isolated corruption episodes was probably just one that never actually got rooted out of the file.
Details on binary search identification and elimination:
Frequently, you can localize a problem because it only shows up on a specific transaction, or a specific report or similar. Since many corruption problems seem to be focused on a specific transaction or bill or similar, narrowing your problem down to the specific item causing the problem can make it possible to fix your problem without resorting to the repair tools--or if they fail--or the more destructive methods.
There is no fixed procedure here. The general method is to try binary methods to narrow down the focus of the problem and then delete, edit, or otherwise eliminate the problem item and then you can re-create it.
For example, a problem report may work if you customize it to report either the first half of the date range or the last. The half that doesn't work can again be divided in halves, repetitively, until you narrow your problem down to, say, one day's worth of transactions. For bills, you can delete (but please read and heed step 0 under the repair tools for guidance to work in copies of your data file) bills until the problem goes away.
For more general problems that may be located somewhere in your account registers, the basic approach (this is NOT a procedure) is to make a copy of your data file, and, in the copy, progressively delete things (accounts, scheduled items, whatever) until happiness is restored. When you delete the nth account (or whatever) and the operation in question starts working, go back to the original file, make another copy, go into the copy, and repeat just that last deletion. If the problem operation still presents itself, go into yet another copy and try further narrowing. If, say, deleting one account restores happiness then go at transactions in the account--delete, say, one month's worth at a time or one half or the other. (The reason the latter approach is called binary search is that when you get to the point where there are lots of cases--like transactions to delete--it is frequently faster to delete half at once and then, assuming your problem went away, you delete half of the same half in the next copy of the original. This kind of search will rapidly narrow down to a specific transaction—for example, 10,000 transactions reduce to 1 in 14 tries.) Of course, there are cases where two or more problem transactions (or accounts or bills or whatever) are in play--this makes it harder, but the same general principles apply.
(One slight digression into Money technique is in order here: if you have to delete transactions in an investment account you will frequently find yourself in the situation where Money says you can't delete a buy because it will cause a negative share balance. Add an Add Share transaction, older than any other transaction in the account in question, for some outrageously large number of shares in the investment in question. You can delete it later.)
When you narrow it down to a specific focus, you go back to the original data file and try to figure out what to do about it. Can the transaction be edited? Deleted and replaced? Change the payee, amount, split, account, etc? Can it be moved to a temporary account and then delete the temporary account?
This can be very tedious but frequently can narrow down a problem to one transaction or entry. Sometimes this one problem item cannot be deleted by itself. Then you end up doing things like creating a temporary account, moving every transaction but the problem one, deleting the problem transaction account, renaming, etc., the temporary account to the old account's name, and then re-enter the now missing problem transaction.
Details on restoring a backup:
If none of this has worked, hopefully you have a recent backup. (After this experience you probably will the next time it happens.) Be sure and restore your data file to a different name or location so as to preserve your original file--if there are problems with your backup you may end up back there. It is possible that you "backed up" this problem. In these cases, you may restore it as well. Hopefully you have kept multiple versions of backup.
Other voodoo:
Sometimes there are multiple reports of odd voodoo that fixes a string of seemingly unrelated issues. These items are captured at "Are there any other voodoo tricks that might solve my problem?"
Details on export/import:
If all of this has failed you, the only choice left, and it is generally quite a poor choice, is to try to preserve as much data as you can using QIF export and then to start over in a new data file, restoring the exported data. MSKB article # 1778830 addresses this approach.
Unless you have 5 accounts or less, you should work really hard to resolve the issue without getting to export/import. This should be your last resort and should only be your resort if you have exhausted every possibility that the problem is not really corruption, not only because of the amount of effort involved in the export/import process, but also because if the problem is not corruption and you go through the whole process, it'll be extremely frustrating to find out that the issue is still there. Export/import also only brings over the information in transactions. This means that your bills, budget, planner, etc., are gone and must be recreated. Loan accounts cannot be exported either. The good news on this is that, if your corruption was in one of these areas, it is left behind once you are in the new file.
If you only have a couple of accounts, by all means go the export/import route rather than spending hours trying to dink around with repair (unless, of course, you have a lot of data in the bills/budget/planner or loan accounts that have transactions unaccompanied by Loan Payments in the accounts being export/imported).
Now that we've discussed corruption to excess, some other information is in order.
What causes corruption? Certainly none of us in the "outside world" are sure what causes corruption. But it tends to happen at rates and in places that tend to suggest that it's not because of cosmic rays. And it happens to people who do not kill Money from task manager every time they see the hourglass and 100% CPU. My suggestion/suspicion is that there truly are lurking defects in the Money code that get hit under the right circumstances and leave the database in these unstable states. Even the MSKB item for the "damaged scheduled item" in M02 makes it sound like demonic possession or some other force beyond the developer's control--but of course they fixed that one in M03, so there must have been a real root cause in the code. I wish I felt that these cases were a priority for identification and elimination and did not feel as though Microsoft considers the -s and salv and the QIF export/import cycle as all they need to do--or maybe even more than we deserve--on these issues.
For some other users, corruption happens in places none of the rest of us has ever seen problems and it happens repeatedly. In these cases, an environmental root cause seems much more likely than a problem that has a defect in Money as root cause. Or there may be some user habit that Money just doesn't like. For instance, some users apparently panic every time they see the hourglass for more than a second or two or see 100% CPU usage by Money, like that's a bad thing by definition, and terminate the application. These cases are much harder for the newsgroup to help with. The environmental causes are even less well understood. The causes likely include DLL conflicts, driver problems, video settings, BIOS settings/problems, IE installation problems, and so forth. Finding these types of problems can certainly be very difficult, but if you are having recurring corruption problems you should pursue these issues rather than just depending on the repair tools to save your data. They may not always be able to do so.
Is Money unusually prone to corrupting its own data files? (Compared to what?) Maybe. Who knows? Are later versions more prone to corrupting their own data files than earlier versions? Generally, versions from M98 forward seem worse than prior versions and versions since M98 seem to be improving, based solely on postings in the newsgroup. But then each version also seems to introduce a new problem like the "damaged scheduled items" in M02. Money may well be unusually prone to environmental problems. It is a poster child for bleeding edge Microsoft development techniques like COM, DHTML, XML, and so on. Remember also that the workhorse tools in the whole house of cards are not even developed by the Money group: MSISAM and IE. Money just bolts some business logic and a UI on top of all of this. For this reason, it is likely very exposed to all of the issues with object contamination by other applications and DLL conflicts and so on. Even flushing Internet temporary items from the IE cache has made strange Money problems disappear. Go figure. It is amazing that, after all these years, Money still detects these problems (that's where messages like "operation cannot be performed" are coming from) but does nothing to resolve them. You'd think that the Money designers would have figured out how to put code at the places where these messages are generated to do something more helpful than just tell us what Money cannot do, leaving us to figure out what it all means and what to do about it.
What should a user do about corruption problems going forward? Well, recommendation #1 would be to make sure you have a backup strategy that assures you have multiple generations of backup, are not depending on any one type of backup media, and that your backups really are. Restoring from your last weekly backup and re-entering three or four days of transactions is probably easier than most any technique for repair described here.
Finally, some users who have been here, done this, decide to start regularly using the repair tools as a prophylactic against future file corruption. There is no evidence that this is an effective strategy. Worse, there is significant anecdotal evidence that the repair tools can emit meaningless messages about problems in your data file when there are absolutely no other indications of any problem. Given how little we know about these tools and how little is documented and how little we know about what they are designed to do/fix and how rigorously they are tested and so on (why I refer to them as voodoo tools), this fixation may be misplaced. Some people have reported more problems after using these tools than before. There is no reason to believe these tools are tested anywhere near as rigorously as the application is. Using them "just in case" seems like a profoundly bad idea.
Thanks to Bonnie Synhorst for contributing the bulk of the answer here and the inspiration for getting it in the FAQ. The good parts are hers--the bad parts I probably edited in. The first person opinions are definitely mine.
References:
MSKB: 178830 Export/Import "repair" and conversion
MSKB: 182608 How to resolve file inconsistencies
Please see this disclaimer if you are using Money 2005 or this comment if you are using Money 2006.
| ← Previous | Next → |
| Issues: "Corruption" Q) I see checks to be printed. Money says there aren't any. What gives? |
Issues: "Corruption" Q) Money says 'This operation cannot be completed.' What's up with that? |
|
Last update: 10 December 2006 |
If this kind of stuff is important to you: