As Stephen pointed out, it's a shortcoming of the Fill Db tool. We're hoping to get a fix for this out in the next Sitecore release (but no promises).
In the meantime, you can use the following SQL script to 'repair' your Items.
The first script will report any Item versions that don't have a revision field.
The second script will create a revision field for all Items that don't have one.
This will then allow the Publishing Service to publish all Items correctly.
-- Report all the Versions that have no revision field
SELECT detectedVersion.*, revisionBasedVersion.*
FROM (
SELECT ItemId, Language, Version
FROM VersionedFields vf
GROUP BY ItemId, Language, Version) AS detectedVersion
LEFT OUTER JOIN (
SELECT ItemId, Language, Version
FROM VersionedFields
WHERE FieldId = '8CDC337E-A112-42FB-BBB4-4143751E123F') revisionBasedVersion
ON detectedVersion.ItemId = revisionBasedVersion.ItemId AND
detectedVersion.Language = revisionBasedVersion.Language AND
detectedVersion.Version = revisionBasedVersion.Version
WHERE revisionBasedVersion.ItemId IS NULL
--
-- Create a revision field for all versions that don't have one
INSERT INTO VersionedFields (
Id,
ItemId,
Language,
Version,
FieldId,
Value,
Created,
Updated)
SELECT NEWID(),
detectedVersion.ItemId,
detectedVersion.Language,
detectedVersion.Version,
'8CDC337E-A112-42FB-BBB4-4143751E123F',
LOWER(CONVERT(NVARCHAR(50), NEWID())),
GETDATE(),
GETDATE()
FROM (
SELECT ItemId, Language, Version
FROM VersionedFields vf
GROUP BY ItemId, Language, Version) AS detectedVersion
LEFT OUTER JOIN (
SELECT ItemId, Language, Version
FROM VersionedFields
WHERE FieldId = '8CDC337E-A112-42FB-BBB4-4143751E123F') revisionBasedVersion
ON detectedVersion.ItemId = revisionBasedVersion.ItemId AND
detectedVersion.Language = revisionBasedVersion.Language AND
detectedVersion.Version = revisionBasedVersion.Version
WHERE revisionBasedVersion.ItemId IS NULL