While I was upgrading a server from MS CRM 3 to 4, I got this error message on the System Requirements part of the installation:
The attachments missing parent object IDs in database.
Since this did not make much sense to me, I did some research and found that I could launch the setup with a command line parameter:
setupserver.exe /L c:\crmlog.txt
and after reading that log, it appeared that many activities were being scanned and it hit an error:
the key words here are 'orphan' and 'annotation' which suggested to me that there were records in the annotation table that did not connect properly to another table.
It turns out that one of my programmers had manually converted some activities into the system using SSIS and left the ObjectID field blank on some records in the AnnotationBase table, so I deleted those records using this SQL statement:
delete from dbo.AnnotationBase
where isnull(objectid ,'fd6fc64e-5165-dc11-baa3-001a6b7af693')
this statement will scan the AnnotationBase table, and for each record that has a Null ObjectID field (my invalid records), it will treat that field as though it has the GIUD 'fd6fc64e-5165-dc11-baa3-001a6b7af693'
(a unique identifier) so that it can compare it with the same GUID, therefore only the records with a null ObjectID will be found and deleted.
and then I re-started the upgrade and it got me past the error so I could continue the upgrade.