
Here is a quick post about setting the max memory in SQL Server so that you got no worries if you forgot to set this at installation.
I get it we all been there before. This was a step I over looked when starting out with SharePoint many years ago. However I did recently have this come up in a discussion and I remembered and thought I should do this in PowerShell to exercise my scripting technique. It seems to be best used as an expression.
Disclaimer:
Test this in a dev environment first and not production to ensure compatibility with versions and the .net framework:
The Nitty Gritty:
Function Set-SQLServerMemory { [CmdletBinding()] Param( [parameter(ValueFromPipelineByPropertyName)][string[]]$ServerName, [parameter(ValueFromPipelineByPropertyName)][int[]]$MaxMemory, [parameter(ValueFromPipelineByPropertyName)][int[]]$MinMemory ) Begin{ write-verbose "Begining" $report=@() #$report+=New-Object -TypeName psobject -Property @{Servername="testServer"; TotalMemory=8076;} | select Servername,TotalMemory $servernames=$servername } Process{ write-verbose "Begining the Process" foreach($ServerName in $ServerNames){ Write-Verbose "In The Loop" $Rawmemorytotal = Get-wmiobject -ComputerName $ServerName -class Win32_PhysicalMemory | Measure-Object -Property Capacity -Sum $TotalMemory=$Rawmemorytotal.Sum $report+=New-Object -TypeName psobject -Property @{ ServerName="$Servername" TotalMemory=($Rawmemorytotal.Sum / 1MB) } $min_os_memory = 2048 if( $TotalMemory -le $min_os_memory) { Write-Host "Memory too Low, Server could be Serverly impacted." -ForegroundColor Red } if ($TotalMemory -ge 8192) { $sql_mem = $TotalMemory - $min_os_memory } else { $sql_mem = $TotalMemory * 0.79 ; } if ($MinMemory -eq 0) { $MinMemory = $MaxMemory } [reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | Out-Null $SQLServer = New-Object Microsoft.SQLServer.Management.Smo.Server($SQLInstanceName) if ($SQLServer.status) { $SQLServer.Configuration.MaxServerMemory.ConfigValue = $MaxMemory $SQLServer.Configuration.MinServerMemory.ConfigValue = $MinMemory $SQLServer.Configuration.Alter() }#end if }#end Foreach } End{ return $report | select Servername,TotalMemory #return [int]$sql_mem ; } }

Leave a comment