Tuesday, November 06, 2012

SMS Despooler failed to merge delta to the compressed package: Error 1 Incorrect Fucntion

So I was happily adding some new drivers to a boot.wim and then tried to send the changes out to my distribution points. That's when the following error started occurring.


SMS Despooler failed to merge delta to the compressed package "C0100112". 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


I then see that the Source Version numbers on the package in the primary site is something like 13 and the rest are on version 7. Looks like a version mismatch to me.

First step.
- Turned off 'Enable binary differential replication'
- Deleted the WIM from all DP's

This didn't fix the issue.

I then looked in the distmgr.log file on the DP and found the following.


Package XXXXXXX requires a newer version (10) of source files and the new compressed files haven't arrived yet, current version is 7, skip X:\ConfigXXX\inboxes\distmgr.box\INCOMING\XXXXXXX.PKG

This tells me something has gone wrong or is stuck when SCCM tried to distribute the package. A call to PSS later and yes we found that the SCCM had stuffed up the Source Version for the packageID and to fix this we needed to modify the SCCM database directly.


http://social.technet.microsoft.com/Forums/en/configmgrswdist/thread/a6bb710c-91d6-4d34-b132-9c948e7c9d2b

http://social.technet.microsoft.com/Forums/en-US/configmgrswdist/thread/312d86e3-e793-4147-97a7-7785295e4986/

Update for Feb 2013:

The way we determined  that we had a source version mismatch was looking at the 'Package Status' for the package the primary SCCM had a package version of #4 and the rest of the distribution points had a version of #3

You can also verify this by looking directly at the PKGSTATUS table in SCCM SQL DB. by executing the following select statement
select * from PkgStatus where pkgstatus.ID = 'PACKAGEID' 
Replace PACKAGEID with the PackageID of the package.

The way we actually fixed the version mismatch was to login to primary database for SCCM and set the source version for package back to '0' and the status to '2'. Doing this tells SCCM that this package is a brand new package that has not been sent to any DP.

The way to update the SourceVersion and Status for Package in SCCM is to open SQL management studio and connect to the primary SCCM SQL DB.

Then execute the following query/statement to backup the PKGSTATUS table into a new table called dbo.pkgstatus_BU;
select * into dbo.pkgstatus_BU from dbo.PkgStatus
Then 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 PackageID of the package you want to reset.
Replace SCCMSERVERNAME with the comptuername of the SCCM Distibution point server you want row you want to update.

You will need to execute the statement for every DP that has the wrong SourceVersion as compared to the primary.

WARNING: If you don't know what you are doing in SQL call Microsoft PSS for guidance before updating SQL databases because if you break your SCCM SQL DB because of something you read on the internet it's probably not going to be covered by warranty.

If you find this article useful please leave me a comment or click on an ad to show your support.

2 comments :

  1. You are awesome Joe Joe. Can you please log a call with MS

    ReplyDelete
  2. Joe Hoe know's a thing or two!

    ReplyDelete