SCCM 2012 R2 SP1 failed upgrade

, , , ,

This was a project that occurred over a year ago so forgive me for missing a few screenshots. The customer site was preparing for a windows 10 migration by moving SCCM to a level to be supported. This was moving from SCCM 2012 R2 to SCCM 2012 R2 SP1.

Pre upgrade tasks:
– back up site servers the night before via maintenance task
– take snap shot of CAS / Primaries
– restart server and stop key sccm services from running (we disabled maintenance tasks, and deployments as well)
– Restore site database to SQL server running the same version as our SQL instance.

During the upgrade
– Successful SCCM Database upgrade
– Successful pre-req checks
– failed configmgr upgrade

There is where the wizard produced the error about a hash mismatch on MSRDCOOB_AMD63.exe that I forgot to take a screenshot of, but I do have an excerpt of the log file. During this step of the process updated files are being copied and replaced into the program files directory on your site server. When I looked at the wizards error message on face value it made me believe my download was somehow corrupted as I am always quick to suspect HBSS lol. It wasn’t until I read the few lines below in the ccmfigmgrsetup.log that I realized it was a permissions issue.

Error #1 Configmgrsetup.log
Failed to copy \CASd$FOR UPGRADEUPDATES FOR UPGRADEmsrdcoob_amd64.exe to d:program filesmicrosoft configuration managerclientx64msrdcoob_amd64.exe, Win32 error = 5
– ERROR: Failed to delete file d:program filesmicrosoft configuration managerclientx64msrdcoob_amd64.exe, Win32 error = 5

The initial implementation of SCCM years before I inherited the environment was performed with a service account that was not any longer in use. I quickly then took ownership of the folder and reset permissions. After the permissions were corrected I restarted the wizard and ran into another error.

Error #2 Configmgrsetup.log

ERROR: SQL Server error: [42S02][208][Microsoft][SQL Server Native Client 11.0][SQL Server]Invalid object name ‘UpgradeViewMapping’. : spHandleDviewUpgrade
– ERROR: Failed to execute query: spHandleDviewUpgrade

This particular message occurred b/c the earlier run of the upgrade had already made it past the successful upgrade of the database and the stored procedure mentioned “spHandleDviewUpgrade” already deleted a key table needed.

In order to fix this you must run perform 2 actions.

The first is to run this SQL query on your database

GO
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[UpgradeViewMapping](

[TmpViewName] [nchar](10) NULL,

[ViewName] [nchar](10) NULL,

[ViewType] [nchar](10) NULL

) ON [PRIMARY] GO

The second is to delete the perf_msg.dll and smsperf.dll in the c:windowssystem32 folder because otherwise the setup will fail again.

Once these actions were completed the upgrade to R2 SP1 went successful.

Take away: the pre-req checker doesn’t exactly check everything like permissions to key folders and be prepared to do sql work.

 

ALSO SEE : Status Message ID 11756

Windows 10 Migration Project (General Starter Queries)

, , , , , , , ,

For my one of my customers environments the move towards windows 10 will be purely security based.
The key features that will be used are UEFI boot w/ Secure-boot enabled, ELAM, Device Guard, and Credential Guard (explanation of features in future blog post)

When starting any operating system deployment project, it is a good idea to know what systems are in your environment so that you can determine which of these systems need to support the new Windows 10 OS.Some systems may need to be replaced, whereas others might only need a BIOS version update to be UEFI capable
Now that Windows 10 is here, now is the time to standardize on native UEFI as the default boot mode. When making this switch, it is also important to enable Secure Boot at the same time. But, before you can do that, you need to determine what is in your environment.In a previous customers environment there were 15 different manufacturers and 350+ different models. Since this environment has such a high number of manufactures we will not be able to deploy bios tools for all 15. We will
chose to run a brief SQL Query to guesstimate systems capable based on the PC Bios Date.

1. Query to identify system manufacturer and model machines
select SMS_G_System_COMPUTER_SYSTEM.Manufacturer, SMS_G_System_COMPUTER_SYSTEM.Model from SMS_R_System inner join SMS_G_System_COMPUTER_SYSTEM on SMS_G_System_COMPUTER_SYSTEM.ResourceId = SMS_R_System.ResourceId

Create collections based on different manufacturers. My previous query resulted in 15 different manufacturers. I will below only provide queries for major vendors. Please note some vendors will have more than 1 name used. For example dell systems us “Dell” Dell Inc” and Dell Computer Corporation” so just use the Like value and %Dell% to obtain all systems from this manufacturer. Other companies you need to use the Like %Hewlett-Packard%” or like %HP%

Some of these collections will be used for deploying BIOS tools against to identify certain key pieces of information for future queries that we will build upon. In a future blog we will cover how to extend hardware inventory to grab newly created WMI namespaces.

2. Dell
select SMS_R_System.Name from SMS_R_System inner join SMS_G_System_COMPUTER_SYSTEM on SMS_G_System_COMPUTER_SYSTEM.ResourceID = SMS_R_System.ResourceId where SMS_G_System_COMPUTER_SYSTEM.Manufacturer like “%Dell%”

3. HP
select distinct SMS_R_System.Name from SMS_R_System inner join SMS_G_System_COMPUTER_SYSTEM on SMS_G_System_COMPUTER_SYSTEM.ResourceID = SMS_R_System.ResourceId where SMS_G_System_COMPUTER_SYSTEM.Manufacturer like “%Hewlett-Packard%” or SMS_G_System_COMPUTER_SYSTEM.Manufacturer like “%HP%”

4. Lenovo
select SMS_R_System.Name from SMS_R_System inner join SMS_G_System_COMPUTER_SYSTEM on SMS_G_System_COMPUTER_SYSTEM.ResourceID = SMS_R_System.ResourceId where SMS_G_System_COMPUTER_SYSTEM.Manufacturer like “%LENOVO%”

5. Transource
select SMS_R_System.Name from SMS_R_System inner join SMS_G_System_COMPUTER_SYSTEM on SMS_G_System_COMPUTER_SYSTEM.ResourceID = SMS_R_System.ResourceId where SMS_G_System_COMPUTER_SYSTEM.Manufacturer like “Transource”

6. Query SQL for count of System Models
SELECT
Manufacturer0, Model0, Count(Model0) AS ‘Count’
FROM
dbo.v_GS_COMPUTER_SYSTEM
GROUP BY
Manufacturer0,Model0
ORDER BY
Model0

BONUS (Meets Physical SPECS + TPM 1.2 and up

Criteria: 2gb ram, 1ghz processor, 120gb HD, TPM 1.2 (run in SCCM Console)

select SMS_G_System_COMPUTER_SYSTEM.Manufacturer, SMS_G_System_COMPUTER_SYSTEM.Model, SMS_G_System_SYSTEM.Name, SMS_G_System_TPM.PhysicalPresenceVersionInfo, SMS_R_System.ResourceId from SMS_R_System inner join SMS_G_System_X86_PC_MEMORY on SMS_G_System_X86_PC_MEMORY.ResourceID = SMS_R_System.ResourceId inner join SMS_G_System_PROCESSOR on SMS_G_System_PROCESSOR.ResourceID = SMS_R_System.ResourceId inner join SMS_G_System_DISK on SMS_G_System_DISK.ResourceID = SMS_R_System.ResourceId inner join SMS_G_System_TPM on SMS_G_System_TPM.ResourceID = SMS_R_System.ResourceId inner join SMS_G_System_COMPUTER_SYSTEM on SMS_G_System_COMPUTER_SYSTEM.ResourceID = SMS_R_System.ResourceId inner join SMS_G_System_SYSTEM on SMS_G_System_SYSTEM.ResourceID = SMS_R_System.ResourceId where SMS_G_System_X86_PC_MEMORY.TotalPhysicalMemory > 2000000 and SMS_G_System_PROCESSOR.MaxClockSpeed > 1000 and SMS_G_System_DISK.Size >= 120000 and SMS_G_System_TPM.PhysicalPresenceVersionInfo >= “1.2”

ALSO SEE : Windows 10 Migration Project (How to start)