This is an old system runnign a C/Side 3.60 database with 5.0 SP1 cleints. The users have been reporting random occurences of the above error. I've finallly been able to isolate the problem to a set of what appears to be corrupt records in the Sales Line table.
A test of the secondary keys succeeds.
A test of the primary keys (and data) fails
Any attempt to touch these records fails (FIND, DELETE, COUNT)
I have exported all the other records, so I do have them.
ANy thoughts/ideas on how I may get past this problem? I don't work that much with native databases these days. So I'm a bit rusty on "the tricks".
There are no bugs - only undocumented features.
0
Answers
In the old days I used to fix a lot of these, and the best way was to get all the good records you could, then some how manually recreate the missing ones. You can use things like reservations and warehouse etc, but its never a guaranteed thing.
Of course another option is C/DART, but the politics of getting a license can be more hassle than its worth.
DELETEALL(FALSE);
is generally the only function that works.
These orders are created from an external interface and the key ("Trans. No.","Trans. Line No.") is the unique reference to the other system.
Not following you here. Wouldn't that just give me an empty copy of my sales line table?
After that should it be possible to backup the database since only the primary key of the current version is part of the backup (the reason for a restore building secondary keys for a very long time).
The only option I know is to delete all records in the table. Since the problem has been for a while is none of the tools used for roll-back of versions useful.
I found the list below with internal errors, but the 1450 is too new and not in the list :-)
http://wiki.dynamicsbook.com/index.php? ... r_messages
T37.RESET;
T37.DELETEALL(FALSE); // default
COMMIT;
If you apply a filter is the database working in the way that each record is retrieved (even with DELETEALL). That will touch the bad records and make it fail. With a DELETEALL without a filter is the pointer in the master table set to a blank (empty table). This causes no reading of the existing records and should not cause an error.
One more I remember is to try to create a new primary key. So if you do have something that makes the records unique, try putting that at the top of the list.
No it will move the data as well. Then you can rebuild it. You will still have a corrupt table (50027) but at least you can get on with fixing it.
The 1450 is actually a Windows operating system error. So I'd not expect to find it in that list.
Excellent list that one.
Fixed my share of these also. Just don't see that much native DB anymore. The tricks get a bit rusty.
Sadly a skill set that is no so much in demand since the move to SQL.
Now I just need to find my next "Window to Oppurtunity" for the database. This database host 7 companies including the one with the problem. It was hard enough getting the cleint to give me a couple hours on a Sunday. You've both given me something to try. Thanks, I will let you know how I do.
This is a large 200+ GB 3.60 database that we just need to limp thru a few more months. The cleint is in the middle of re-implmenting on NAV 2009 (not upgrading). But, as you can imagine, it's not a straight forward update. But rather involves a fair amount of process review and rethinking.
Actually sometimes even running in the onbefore trigger of a report wont work, so try in a codeunit.
Thanks for the helps. Especially on a Sunday.