Archive for June, 2010|Monthly archive page
Customising The Configuration Manager Dashboard (Slightly)
I want to add another pie chart to the defaults on the rather lovely Configuration Manager Dashboard. I’ve already installed the product, which is very straightforward, so connect to the dashboard and click Site Actions – Edit Page…
This displays a hidden web part
Enter a name for your new “Dataset”, here I’m using ComputerModels.xml.
Expand out the Dataset section and add your SQL server name and Configuration Manager database name.
Now add your SQL query. I just want a pie chart of my computer models, so a simple query will suffice:
Select top 10 v_GS_COMPUTER_SYSTEM.Model0 as Model, COUNT(*) AS ‘Count’ FROM v_GS_COMPUTER_SYSTEM
GROUP BY v_GS_COMPUTER_SYSTEM.Model0 ORDER BY Count(*)
Click to Validate your query, then expand out the Chart section
I want a pie chart called Computer Models, fill in the boxes and click Save and Close.
Now all that’s needed is to add the newly created dataset to a web part. Click “Add a Web Part” on the page where you wish to display your lovely new chart.
Select Microsoft Dashboard Viewer from the list of webparts
This will add a blank web part to your site:
Click Edit and select “Modify Shared Web Part”
In the right hand pane, click in the “Select Dataset” box and select the ComputerModels.xml we just created
Apply this change and click the Home link on the top of the page and you’re done!
USMT State Capture Failure
We’re part way through a nice little Windows 7 project, and have the New Computer scenario cooking just fine, driver management for some of the AMT stuff has been a real challenge, but once you have all the right driver versions for the right laptop models it all goes in fine. Irritatingly, some of the drivers for the AMT SOL packages are model specific, but just generate an error that your machine doesn’t meet the minimum requirements. Anyway, I digress, we’ve started on Zero Touch, and I came across an error I’ve not seen before:
The task sequence execution engine failed executing the action (Capture User State) in the group (State Capture) with the error code 2147942402
Action output: 0, HRESULT=80070002
If you are seeing this, it’s possibly because you have (again!) forgotten to update your Configuration Manager Client package when you installed SP2. At SP2 the agent should have a ConfigMgr Client Version of 4.00.6487.2000. SP1 is 1000.
Right click your agent package and update distribution points, ConfigMgr will automagically pick up the new client source.
Obviously you’ll also need to upgrade the live client…
Meeting Jeff – Part 2
A quick update for anyone who hasn’t already seen enough of me (or Carl). The interview with Jeff Wettlaufer mentioned below is now online on the System Center blog – Nexus One, for your , I dunno, enjoyment.
We also have a new website at
http://www.Orinoko.co.uk
I am certain this will be a permanent work in progress, but it is an improvement over our previous one at any rate.
Lets… True-Up with Configuration Manager
Using ConfigMgr we can leverage the inventory data gathered by the client agent to report on our license compliance against the MVLS report provided by Microsoft from the MVLS site.
To get your license report do the following:
- Log into the MVLS Site, Hover over Microsoft License Statement
- Select view Microsoft License Statement
- Click the + to bring down the Add Agreements Option and add your agreement and enrolment numbers in the field
- Click calculate new statement
- Right click on table under License Summary Tab and select Export to Microsoft Excel
Now open this file in Excel. You need to muck about with it a little bit…
Column A will be blank, delete it.
Format the License Version column (C) as TEXT.
Now Save As Excel 2003 XML format.
Copy this into a folder, shared and accessible to the SMS Provider and the user you’re logged in as.
Right click the Asset Intelligence node and select Import Software Licenses
Note, the Example text is incorrect, you need to provide the name of the xml file too.
Complete the wizard and with a fair wind you will be rewarded with a little tick:
In my opinion (having spent all morning getting an import failure) this should also play a little fanfare sound, but it doesn’t.
Looks like we need a few more Project licenses!
I Have an Enduring Love for Configuration Manager, but…
…sometimes it tests me…

We have to install SP2 for ConfigMgr before we can start our Windows 7 imaging. The customer we’re working on has SP1 deployed, the site was originally upgraded from SMS 2003. Suffice to say that the SQL database is in a bit of a mess.
Problem 1.
The installation bombs out with an error in the C:\ConfigMgrSetup.log:
The login already has an account under a different user name.
This turns out to be an issue where we have a SQL account with the NetBIOS name of the server but a login id of the full domain machine account. E.g. The SQL User Name is “SERVER” but the login ID is DOMAIN\SERVER$.
ConfigMgr attempts to add its computer account account to SQL (which is also DOMAIN\Server$) and gets the above error. Deleting the existing NetBIOS name account isn’t possible as it owns the “SMS Admins” SQL schema.
The solution is to grant another account (NETWORKSERVICE seems to work) the ownership of the SMS Admins schema, remove ownership for the NetBIOS named account, then you can delete it and once the account is re-added as DOMAIN\SERVER$ you can transfer the ownership of the SMS Admins schema back to this account.
This was, however, just the start of the problems.
Problem 2.
Error in Setup log:
Cannot create a row of size 8065 which is greater than the allowable maximum of 8060.
I still haven’t got to the bottom of this one except that compressing the database seems to make it go away… At the same time as we were having these problems, our DB was also growing by around 200MB per hour, there’s some discussion here that this may be related to a post SP2 hotfix, but I have not been able to confirm this.
Problem 3
Our database is corrupt. And unfortunately it’s in quite an important table…
Error in the setup log:
The Database ID 58, Page (1:140044), slot 20 for LOB data type node does not exist. This is usually caused by transactions that can read uncommitted data on a data page. Run DBCC CHECKTABLE.
Running DBCC Checktable tells us that the data is unrecoverable and that only running DBCC CheckDB with REPAIR_ALLOW_DATA_LOSS is going to fix it. After scrabbling around for a while without joy we ran this and it scrapped around 100 rows from the database. Unfortunately the data is in the CI_ConfigurationItems table. There’s a lot of other tables which depend on this, referential integrity issues await!
Problem 3.
Having “repaired” the database we now essentially have a bunch of orphaned items scattered around the Configuration Manager SQL database. This is a real problem as the SP2 setup routine is going to recreate all of the SQL Foreign Key links and if there’s incompatible data in the linked tables the setup routine will bomb out:
The ALTER TABLE statement conflicted with the FOREIGN KEY constraint "Update_ComplianceStatus_CI_UpdateCIs_FK". The conflict occurred in database "SMS_XXX", table "dbo.CI_UpdateCIs", column ‘CI_ID’.
The table will vary, but essentially what this is telling us is that there are records in the Update_ComplianceStatus table that do not have a corresponding record in the CI_ConfigurationItems table, because they were corrupt and have now been removed.
To identify the offending records I executed the following SQL Query
Select distinct CI_ID
From Update_ComplianceStatus
Where CI_ID not in (select CI_ID from CI_ConfigurationItems)
This results in a few records being returned which represent tens of thousands of status messages, inventory records, whatever… They need to be removed:
Delete from Update_ComplianceStatus where CI_ID = ’9420′
Delete from Update_ComplianceStatus where CI_ID = ’9644′
Delete from Update_ComplianceStatus where CI_ID = ’11666′
Delete from Update_ComplianceStatus where CI_ID = ’25041′
Delete from Update_ComplianceStatus where CI_ID = ’26261′
Delete from Update_ComplianceStatus where CI_ID = ’29627′
Delete from Update_ComplianceStatus where CI_ID = ’31677′
Delete from Update_ComplianceStatus where CI_ID = ’33272′
I created the above statements in Excel using Concatenate to add the text to the ID, I recognise that you can do the whole thing programmatically, but this way you can run them one at a time in the SQL interface:
I like this, as these kind of things make me a little nervous…
Once these tasks are complete I rerun setup and wait for the next failure in the log, then repeat the above. A lot.
It took EIGHT HOURS!!!!! but:
Now I need a pint!
Comments (5)