Many enterprises install multiple SMS providers in their Configuration Manager environment. This gives them flexibility and choice to scale on demand and also make the system completely fail-safe. 1E is happy to announce that Shopping 5.2 will now start supporting multiple providers, in line with 1E’s intention to embrace the new and important technical changes in Configuration Manager.
Before we go into the details, let’s talk about few basics:
What is an SMS provider?
SMS Provider is a WMI provider that allows both read and write access to the Configuration Manager site database. The SMS Provider is used by the Configuration Manager console, Resource Explorer, tools, and custom scripts used by Administrators to access site information stored in the site database. SMS Provider also helps ensure that Configuration Manager object security is enforced by only returning site information that the user account running the Configuration Manager console is authorized to view.
After the installation setup is complete, the current installed location of the SMS Provider is displayed on the site properties general tab. So essentially SMS provider is a WMI wrapper on SMS related classes which can be used to connect to configuration manager site database.
Need for multiple providers
Having only one SMS provider for the connection increases the risk of a single point of failure. Obviously, having more than one provider mitigates this risk. One can choose to install SMS providers at below locations:
|Configuration Manager site server||The SMS Provider does not use resources on the site database server which allows better site database performance.||The SMS Provider uses system and network resources that could be dedicated to site server operations to provide site database information to remote Configuration Manager Console displays.|
|SQL Server hosting the site database||The SMS Provider is always in contact with the SQL Server hosting the site database which allows direct communication with Configuration Manager Console installations from the site database server. Faster Configuration Manager Console performance than installing the SMS Provider on the site server.||The SMS Provider uses system and network resources that could be dedicated to site database operations to provide site database information to remote Configuration Manager Console displays. The SMS Provider cannot be installed on a clustered SQL Server virtual instance.|
|Computer other than the site server or site database server||Highest performance increase for site operations because the SMS Provider does not use site system resources on the primary site server or site database server.||The SMS Provider must be installed on a server operating system there is a higher chance it will use system resources that would otherwise be dedicated to other services. Must be constantly accessible to both the site database server and all computers with the Configuration Manager console installed.|
Now, lets deep-dive into the Shopping 5.2 updates that support this feature.
The SMS Provider Namespaces
A WMI schema exists to describe the structure of the SMS Provider. Schema namespaces describe the location of Configuration Manager Data within the SMS Provider schema. The following table contains the common namespaces used by the SMS Provider. Details can be found here
|Root\SMS\site_<site code>||The SMS Provider, which is extensively used by the Configuration Manager console, Resource Explorer, Configuration Manager tools and scripts.|
|Root\SMS\SMS_ProviderLocation||Provides the location of the SMS provider server for a site.|
|Root\CIMv2||Location inventoried for WMI namespace information during hardware and software inventory.|
|Root\CCM||Configuration Manager client configuration policies and client data.|
|root\CIMv2\SMS||Location of inventory reporting classes that are collected by the inventory client agent. These settings compiled by clients during computer policy evaluation and are based on the contents of the SMS_def.mof file.|
More details about planning for the SMS providers can be found at below location
And here you can find a short explanation of installing a SMS Provider:
Provider Locations Support in Shopping
There were multiple changes made at the code level across several Shopping components. At installer level, changes have been made to handle the multiple stream of strings gracefully to pick one of the lot during the install. At code level, each time the service (Central and Receiver) is started, it would trigger the below query :
select SiteCode, NamespacePath from SMS_ProviderLocation where ProviderForLocalSite = 1
The above query will return all providers associated for a given site.
A typical environment having multiple SMS providers can be queried by using WQL through any tools (WMI Explorer or WBEMTest).
Shopping components (viz. Receiver Service, Central Service, Shopping Web, and Admin Console) will fire the above query at the time of start or when the process is loaded into the memory. Then, it would iterate through each result/provider to check if that provider is responding. Response check is done via using small WQL which is targeted for the specific provider:
SELECT Version FROM SMS_Site WHERE SiteCode = ‘CAS01’
If there is any result back from the above query before time-out, then it would assume that provider is in good health and hence can be used for making all future calls. If there is a time-out or any other error then the system will skip this provider and try to connect to the next one in the collection.
So, let’s assume a scenario where there are 5 providers which are set-up in a SCCM system and at the time of receiver start, 4 of them are down and only one is up and running. Even in the worst case scenario, receiver would try to connect to four providers (which are down) and eventually it will automatically reach out to the correct one.
Apart from our ‘big ticket’ roadmap execution, 1E is determined to keep adapting to tech changes on a continuous basis. In this case, that happens to be supporting multiple providers in Configuration Manager with Shopping 5.2.