A few weeks back, a customer contacted me with an interesting problem, something that should be easily solved at first glance.
The customer had tried to update the boot-wim with new drivers, distributed it again, but when everything stopped working, they tried to reverse the changes, distributing the package once again. This resulted in the following error on all sites:
SMS Despooler failed to merge delta to the compressed package “P01000A2”. The operating system reported error 1: Incorrect function.
Possible cause: The destination drive is full.
Solution: Make more space available on that drive. SMS Despooler will attempt to merge the delta again during its next retry interval.
After verifying that the disk wasn’t full, there were about 100Gb+ of space left on almost all servers, I came to the conclusion that there was something wrong with the package.
Looking at the “Package Status” of the affected package, I saw that the primary server had a version of #11, but the rest of the distribution points had a variety of versions, between #7 and #9.
Looking in the distmgr.log on one of the distribution points, I saw the following error:
Package P01000A2 requires a newer version (11) of source files and the new compressed files haven’t arrived yet, current version is 8, skip X:ConfigXXXinboxesdistmgr.boxINCOMINGP01000A2.PKG
My first step to try to solve this, was to remove all files from the distmgr.box folder and try to redistribute the package. This did absolutely no difference, more than increasing the source version by one on the primary site server.
This means that something had gone really wrong when the first distribution was done, probably someone tried to distribute the package multiple times, without verifying that the distribution done before was completed.
To solve this mismatch I had to manually edit the SCCM database, something that’s not supported by Microsoft, and isn’t covered by warranty.
So if you do not know what you are doing in SQL, please open a ticket with Microsoft!!
The below part shows you how to solve this issue, but as mentioned above, this is not supported by Microsoft! (Even though they probably will give you the same answer)
Start SQL Management Studio, and connect to the primary database for SCCM.
Run the following command to list all servers that the package is distributed to.
select * from PkgStatus where pkgstatus.ID = ‘PACKAGEID’
Run the following command to create a backup of the table called “dbo.pkgstatus_BackUp”
select * into dbo.pkgstatus_BackUp from dbo.PkgStatus
Do an update statement to reset the SourceVersion and Status
UPDATE PkgStatus SET SourceVersion = 0, Status = 2 WHERE Id = ‘PACKAGEID’ and PkgServer = ‘SCCMSERVERNAME’
Replace PACKAGEID with the correct ID and SCCMSERVERNAME with the name of the server where the package has failed to distribute.
This needs to be done for every distribution point that has the wrong sourceversion of the package!
Setting the SourceVersion to “0” and the Status to “2” will tell SCCM that this is a new package that hasn’t yet been deployed to the distribution point.
Then update the package on the distribution point/points and everything should be correct.