Author Brandon Abshire,
Availability Windows, Linux, macOS


Want to see the source code for this command? Check out Test-DbaOptimizeForAdHoc on GitHub.
Want to see the Bill Of Health for this command? Check out Test-DbaOptimizeForAdHoc.


Displays information relating to SQL Server Optimize for AdHoc Workloads setting. Works on SQL Server 2008-2016.


When this option is set, plan cache size is further reduced for single-use ad hoc OLTP workload.

More info:

These are just general recommendations for SQL Server and are a good starting point for setting the "optimize for ad-hoc workloads" option.


    [-SqlInstance] <DbaInstanceParameter[]>
    [[-SqlCredential] <PSCredential>]




Example: 1
PS C:\> Test-DbaOptimizeForAdHoc -SqlInstance sql2008, sqlserver2012

Validates whether Optimize for AdHoc Workloads setting is enabled for servers sql2008 and sqlserver2012.

Required Parameters


A collection of one or more SQL Server instance names to query.

Required True
Pipeline true (ByValue)
Default Value

Optional Parameters


Login to the target instance using alternative credentials. Accepts PowerShell credentials (Get-Credential).
Windows Authentication, SQL Server Authentication, Active Directory - Password, and Active Directory - Integrated are all supported.
For MFA support, please use Connect-DbaInstance.

Required False
Pipeline false
Default Value

By default, when something goes wrong we try to catch it, interpret it and give you a friendly warning message.
This avoids overwhelming you with "sea of red" exceptions, but is inconvenient because it basically disables advanced scripting.
Using this switch turns this "nice by default" feature off and enables you to catch exceptions with your own try/catch.

Required False
Pipeline false
Default Value False