Wednesday, 13 January 2016

Skype for Business, SQL Server, and VMware

If you have deployed a virtualized Lync Server 2013 or Skype for Business infrastructure, and have followed the best practices, your Lync or Skype VMs will no doubt have multiple CPU cores.

If you have done this on VMware, and you let the VMware provisioning wizard automatically assign the CPUs, you may have a problem.

By default VMware will assign multiple CPU cores as multiple virtual CPU sockets, each with a single virtual core. This means that in an eight core server you have eight sockets. This fine for Lync or Skype, but represents a problem for the SQL Express installation that every front end server has, or indeed the SQL Server Standard installations you might be using for your back-end databases.

SQL Server Express is limited to "the lesser of 1 socket or 4 cores", which means that in the default VMware configuration SQL Express gets 1 core (because 1 socket has 1 core).

SQL Server Standard Edition is limited to "the lesser of 4 sockets or 16 cores", which means that if you have more than 4 virtual sockets, but only 1 virtual core per socket, SQL gets only 4 cores.

In order to give SQL Express access to more CPU resources you need to alter the virtual CPU allocation to put have fewer virtual sockets, with multiple virtual cores per socket.

To look for this issue in my VMware-based Skype for Business Environment I put together a brief script. The purpose is to report out the CPU configuration of all the servers which host a local management store replica (these servers have a local SQL Express instance), and all the back-end database servers.

Note that the script will fail to connect to Edge servers, and those should be checked manually.

# Get-SkypeServerCpuDetails.ps1
# Script to retrieve the CPU details of servers hosting Skype for Business SQL databases
# Ben Lye -

# Create an array of all the Skype for Business servers we are interested in
$Servers = @()
# Get the servers hosting replicas of the management store - these systems will have SQL Express Edition
$Servers = $Servers + @(Get-CsManagementStoreReplicationStatus | Where {$_.ProductVersion -ne ""} | Select-Object ReplicaFQDN -ExpandProperty ReplicaFQDN)
# Get the Application Database servers - these will be SQL Server Standard Edition or Enterprise Edition
$Servers = $Servers + @(Get-CsService -ApplicationDatabase | Select-Object PoolFqdn -ExpandProperty PoolFqdn)
# Get the Persistent Chat database servers
$Servers = $Servers + @(Get-CsService -PersistentChatDatabase | Select-Object PoolFqdn -ExpandProperty PoolFqdn)

# Create an array for the output
$Output = @()

# Loop through each of the servers
$Servers | % { 
 # Create an object to store the output in
 $Object = New-Object –TypeName PSObject
 $Object | Add-Member –MemberType NoteProperty –Name HostName –Value $_
 # Use WMI to get the details of the processor(s) from the system
 If ($ServerProcs = @(Get-WmiObject win32_processor -ComputerName $_)) {
  # Populate the output object with details of the processors
  $Object | Add-Member –MemberType NoteProperty –Name CpuDescription –Value ($ServerProcs[0].Name -replace '\s+', ' ')
  $Object | Add-Member –MemberType NoteProperty –Name CpuSockets –Value $ServerProcs.Count
  $Object | Add-Member –MemberType NoteProperty –Name CpuCoresPerSocket –Value $ServerProcs[0].NumberOfCores
  $Object | Add-Member –MemberType NoteProperty –Name TotalCpuCores –Value ($ServerProcs.Count * $ServerProcs[0].NumberOfCores)
 # Append the output object to the output array
 $Output = $Output + $Object

# Return the output
Return $Output
Download Script

The script doesn't give information about which version of SQL Server each system is running, so you'll need to know that in order to determine if there is actually a problem in the resulting output.

- Ben


  1. I am hoping the same best effort from you in the future as well. In fact your creative writing skills has inspired me.
    QuickBooks in Key West

  2. Advances from Customers: Advances are essentially requested and gotten for the affirmation of requests However, these are additionally utilized as wellspring of financing the operations important to execute the employment arrange. hedge funds

  3. This blog merits an amazing honor and I must say, the blog writings are spiritual.
    Dresden Immobilien

  4. This blog totally steps away from all those generic and symbolizes what well-written truly looks like.
    Dissertation help uk

  5. This comment has been removed by the author.

  6. When you are in a tanning salon and within the private room for undressing, take a look at yourself if there is any hidden eye peeping over there. At this point, this could be a difficult task to

  7. Now that is the thing that I call an enormous blog. Flawlessly composed.

  8. Invite. Details. The biggest ecommerce launch of 2017 is launching on Sept 12th. JV's & Affilaites need to check out for details. trexmegastore


  9. loans for unemployed

    pretty helpful stuff, overall I believe this is really worth a bookmark, thanks

  10. As the transformer burned, the soot entered the buildings ventilation shafts and quickly spread toxic soot throughout the building. cryptocurrency converter

  11. The most well-known means are advances and financing. Resource based credits utilize a business' benefits, for example, stock and hardware, as security.go here

  12. Its very good idea to use Skype for such purpose, definitely try to do it as soon as possible. Also I wanna add that only this skype latest version has everything that u need for business.

  13. The best way to ensure success in getting your business loan is to be prepared. guarantor loans

  14. One of the best ways to incorporate a business is using an online incorporation service. The trouble is there are many to choose from. Read these 10 tips to using and choosing a quality online incorporation service to ensure you get the right service for your business incorporation needs. WY Incorporation

  15. If you are a businessperson who wants to expand the consumer base to gain a foothold in the international arena, then you have to be prepared to send the final products to the consumers globally and to receive the raw materials from different locations of the world. To achieve this successfully, you can make use of the mail forwarding service providers who ensure the safe delivery of the goods on time. Virtual address in Wyoming

  16. So you'll require a legal advisor, real estate agent, building monitor and duty bookkeeper for a begin. Investment websites