SQL Azure Memory Grants Test

When a query is parsed and compiled initially, it will consume compile or optimizer memory. Once the query is compiled that memory is released and the resulting query plan must be stored in cache. For that, the plan will consume plan cache memory and will stay in the cache until Microsoft SQL Azure Database Server is restarted or memory pressure occurs. Once a plan is cached, the query is ready for execution. If the query happens to be performing any sort operations or hash match (join or aggregates), then it will first reserve and later be granted to use part, or all, of the reserved memory for sort results or hash buckets. These memory operations during the execution of a query are collectively termed as Memory Grants, QE Reservations, Execution Memory, Workspace memory and Memory Reservations.

When the Microsoft SQL Azure Database Server grants the requested memory to an executing query it is said that a memory grant has occurred. If any delays are noticed in granting the requested memory, then the execution time of the query too may increase considerably. To avoid such unnecessary delays and to proactively detect such delays, it is essential for the administrators to keep a constant vigil on the memory grants of the database server. The SQL Azure Memory Grants test helps administrators in this regard!

This test helps administrators figure out the maximum wait time for which the query should wait for the requested memory and the maximum amount of memory consumed by a query for execution. Besides, this test also throws light on the count of queries that are still waiting for the requested memory for execution. The detailed diagnostics lists the queries that are taking longer than usual time for execution.

Target of the test : A Microsoft SQL Azure database server

Agent deploying the test : An external/remote agent

Outputs of the test : One set of results for the target Microsoft SQL Azure database server being monitored.

Configurable parameters for the test
  1. Test period - How often should the test be executed
  2. Host - The host for which the test is to be configured.
  3. ssl – If the Microsoft SQL server being monitored is an SSL-enabled server, then set the ssl flag to Yes. If not, then set the ssl flag to No.
  4. instance - In this text box, enter the name of a specific Microsoft SQL instance that is to be monitored. The default value of this parameter is “default”. To monitor a Microsoft SQL instance named “CFS”, enter this as the value of the INSTANCE parameter.
  5. USER – Provide the name of a SQL user with the view server state role.
  6. password - The password of the specified user.
  7. confirm password - Confirm the password by retyping it
  8. domain - By default, none is displayed in the DOMAIN text box. If the ‘SQL server and Windows’ authentication has been enabled for the server being monitored, then the DOMAIN can continue to be none. On the other hand, if ‘Windows only’ authentication has been enabled, then, in the DOMAIN text box, specify the Windows domain in which the managed Microsoft SQL server exists. Also, in such a case, the USER name and PASSWORD that you provide should be that of a user authorized to access the monitored SQL server.
  9. isntlmv2 - In some Windows networks, NTLM (NT LAN Manager) may be enabled. NTLM is a suite of Microsoft security protocols that provides authentication, integrity, and confidentiality to users. NTLM version 2 (“NTLMv2”) was concocted to address the security issues present in NTLM. By default, the isntlmv2 flag is set to No, indicating that NTLMv2 is not enabled by default on the target Microsoft SQL host. Set this flag to Yes if NTLMv2 is enabled on the target host.
  10. ISPASSIVE – If the value chosen is yes, then the Microsoft SQL server under consideration is a passive server in a SQL cluster. No alerts will be generated if the server is not running. Measures will be reported as “Not applicable’ by the agent if the server is not up.
  11. REPORTMANAGERTIME – By default, this flag is set to Yes, indicating that, by default, the detailed diagnosis of this test, if enabled, will report the shutdown and reboot times of the device in the manager’s time zone. If this flag is set to No, then the shutdown and reboot times are shown in the time zone of the system where the agent is running(i.e., the system being managed for agent-based monitoring, and the system on which the remote agent is running - for agentless monitoring).
  12. To make diagnosis more efficient and accurate, the eG Enterprise embeds an optional detailed diagnostic capability. With this capability, the eG agents can be configured to run detailed, more elaborate tests as and when specific problems are detected. To enable the detailed diagnosis capability of this test for a particular server, choose the On option. To disable the capability, click on the Off option.

    The option to selectively enable/disable the detailed diagnosis capability will be available only if the following conditions are fulfilled:

    • The eG manager license should allow the detailed diagnosis capability
    • Both the normal and abnormal frequencies configured for the detailed diagnosis measures should not be 0.
Measurements made by the test
Measurement Description Measurement Unit Interpretation

Maximum memory consumed by query

Indicates the maximum amount of memory consumed by a query executing on this database.



Queries waiting for memory

Indicates the number of queries waiting for memory in this database.



Maximum query cost by memory

Indicates the maximum query cost based on memory of this database.


A high value for this measure is a cause of concern.

Maximum wait duration for memory

Indicates the maximum time for which the query had to wait for memory in this database.


A high value for this measure is a cause of concern as this may sometimes indicate that the database is inaccessible.