Thursday, April 10, 2014

Software Updates Deployment Package Distribution Error

Software Updates Deployment Package Distribution Error.

Problem

I have had a few instances where after I change my automatic deployment rule for software updates the deployment package will not distribute to the distribution points as it thinks it downloaded the updates but cannot find the directory it is looking for.  The error in the distmgr.log is “The source directory \\<ServerName>\<FolderPath>\<UpdateGUID> doesn't exist or the SMS service cannot access it, Win32 last error = 2”.  Another place to find the error is in the Content Status of the Package by going into the Configuration Manager Console\Monitoring\Distribution Status\Content Status\ Find your Package\ Click View Status\Click the Error Tab\ Under Asset Details \Click an Errored Distribution Point\click More Details. It will say something similar to “The source directory “\\<ServerName>\<FolderPath>\<UpdateGUID> “ for package “<PACKAGE ID> does not exist...”

Solution

I pulled this information from a couple of sources http://www.verboon.info/2013/08/configmgr-2012-troubleshooting-a-software-update-package/ and http://blogs.technet.com/b/ken_brumfield/archive/2013/01/10/troubleshooting-sccm-software-update-deployment-package-distribution-due-to-missing-directories.aspx

Had to give credit where it was due J

Steps to Resolve

1.       Open SQL Server Management Studio and create a new query pointed to your SCCM database (Not Master)

a.       Copy and paste this query

DECLARE @MissingSourceDirectory NVARCHAR(512)
DECLARE @PackageId NVARCHAR(8)
SET @MissingSourceDirectory = 'c34e2458-681f-4a8b-8941-a460c2de314a'
SET @PackageId = '0020000D'

SELECT CASE
        WHEN ci.BulletinID LIKE '' OR ci.BulletinID IS NULL THEN 'Non Security Update'
        ELSE ci.BulletinID
        END As BulletinID
    , ci.ArticleID
    , loc.DisplayName
    , loc.Description
    , ci.IsExpired
    , ci.DatePosted
    , ci.DateRevised
    , ci.Severity
    , ci.RevisionNumber
    , ci.CI_ID
FROM dbo.v_UpdateCIs AS ci
LEFT OUTER JOIN dbo.v_LocalizedCIProperties_SiteLoc AS loc ON loc.CI_ID = ci.CI_ID
WHERE ci.CI_ID IN
(
    SELECT [FromCI_ID]
    FROM [dbo].[CI_ConfigurationItemRelations] cir
    INNER JOIN [dbo].[CI_RelationTypes] rt ON cir.RelationType = rt.RelationType
    WHERE cir.ToCI_ID IN
    (
        SELECT CI_ID
        FROM [dbo].[CI_ContentPackages] cp
        INNER JOIN [dbo].[CI_ConfigurationItemContents] cic ON cp.Content_ID = cic.Content_ID
        WHERE cp.ContentSubFolder = @MissingSourceDirectory AND cp.PkgID = @PackageId
    )
)

b.      Replace the highlighted areas with the values from your error

                                                               i.      @missingSourceDirectory

                                                             ii.      @PackageId

c.       Execute the Query

                                                               i.      This should give you the KB Article

2.       Open the Configuration Manager Console

a.       Go to Software Library>Software Updates>Deployment Packages

                                                               i.      Open the problem Deployment package to where you can see all the updates listed

                                                             ii.      Search for the KB you found above and delete it from the deployment package

b.      Go to Software Library>Software Updates>Software Update Groups

                                                               i.      Look for the Update Groups with the Red X and open them up

                                                             ii.      Look for the Red X updates and right click on them and click Download

1.       If it is expired or superseded just delete it from the update group as you will be unable to download it.

3.       Watch the Distmgr.log file and see if it completes its checks and start distributing the package to your distribution points

4.       This should resolve the issue if it does not look at the logs again and repeat as it will be erroring on a new GUID now.

a.       If you find several you may wish to take a shotgun approach and open the Deployment package and put in a date range you think is the issue and then delete the updates from the deployment package and then go back to the Software Update Groups and tell all the Red Xs to download again.  This should resolve the issue as well.  After each successful download watch the DistMgr.log to validate a successful deployment

22 comments:

  1. This comment has been removed by the author.

    ReplyDelete
  2. so what happens if the query executes successfully, but fails to find a corresponding KB?

    ReplyDelete
    Replies
    1. Also have a similar problem. I find a correspondig KB but it does not have an id, just this:
      Bulletin ID: Non Security Update
      Display Name: NULL
      Description: NULL
      IsExpired: 0
      DatePosted: 2017-09-29 03:23:41.000
      DateRevised: 2017-09-29 03:23:41.000
      Severity: 0
      Revision Number: 200
      CI_ID: 16891679

      Any ideas?

      Delete
  3. I've read a lot of blogs about fixing this. Hands-down yours is the best. Easy to read, the query works :-) And the fix is plain vanilla and easy. Job well done sir.

    ReplyDelete
  4. This query also worked for me. Thanks for sharing

    ReplyDelete
  5. For some reason, sccm's wsus server removed permissions from it's WSUS share. I deleted (stupidly), the scep packages out of the dp's.
    Then discovered missing permissions, and got everything working again, but scep wouldn't distribute to the dp's anymore. With the above red lines in the log.
    Much messing around, and googling solutions, I came across this, and it worked.
    Thank you.

    ReplyDelete
  6. Great stuff, thanks a lot!

    ReplyDelete
  7. Brilliant article. Thanks alot!

    ReplyDelete
  8. Wonderful, my issue got resolved after following the steps.

    ReplyDelete