SQL Open Cursors Test

Cursor is a database object used by applications to manipulate data in a set on a row-by-row basis, instead of the typical SQL commands that operate on all the rows in the set at one time.

If cursors executing on a Microsoft SQL server take too long a time to execute, it could drain critical server resources, and could severely hamper server performance. With the help of this test, you can easily track the number of cursors that each application is executing on the Microsoft SQL server and the time they take to execute, so that resource-intensive cursors and the applications executing them can be isolated.

This test has been disabled by default for this layer. To enable this test, go to the enable / disable tests page using the menu sequence : Agents -> Tests -> Enable/Disable, pick Microsoft SQL as the Component type, Performance as the Test type, choose this test from the disabled tests list, and click on the << button to move the test to the ENABLED TESTS list. Finally, click the Update button.


This test is applicable only to Microsoft SQL Server 2005 (and above).

Target of the test : A Microsoft SQL server

Agent deploying the test : An internal agent

Outputs of the test : One set of results for each application that is executing cursors on the Microsoft SQL server instance being monitored

Configurable parameters for the test
  1. TEST PERIOD - How often should the test be executed
  2. Host – The IP address of the Microsoft SQL server.
  3. Port - The port number through which the Microsoft SQL server communicates. The default port is 1433.
  4. 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.
  5. 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.
  6. USER – If a Microsoft SQL Server 7.0/2000 is monitored, then provide the name of a SQL user with the Sysadmin role in this text box. While monitoring a Microsoft SQL Server 2005 or above, provide the name of a SQL user with all of the privileges outlined in User Privileges Required for Monitoring Microsoft SQL server.

  7. password - The password of the specified user
  8. confirm password - Confirm the password by retyping it.
  9. 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.
  10. exclude info - By default, this is set to none, indicating that the test will monitor all the wait types active on the Microsoft SQL server by default. To exclude specific wait types from the monitoring scope of this test, provide a comma-separated list of wait types in the EXCLUDE INFO text box.
  11. 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.
  12. 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.
  13. dd frequency - Refers to the frequency with which detailed diagnosis measures are to be generated for this test. For instance, if you set to 1:1, it means that detailed measures will be generated every time this test runs, and also every time the test detects a problem.
  14. DETAILED DIAGNOSIS – 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

Number of cursors:

Indicates the total number of cursors that this application is currently executing on the server.


Compare the value of this measure across applications to know which application is executing the maximum number of cursors on the server.

Use the detailed diagnosis of this measure to know the details of the cursors. This includes the name of each cursor, which user created the cursor, when, how long has it been since the cursor was created, the number of disk reads and writes performed by the cursor, and the worker time of the cursor. Long running cursors and I/O intensive cursors can thus be isolated.

Avg cursor opentime:

The average time for which this application was executing cursors on the server.


Ideally, the value of this measure should be low. A high value indicates that the cursors executed by this application have been running for too long a time on the server; besides eroding server resources, this phenomenon can greatly degrade server performance. Compare the value of this measure across applications to identify which application is executing long running cursors.

Max cursor opentime:

Indicates the maximum time for which cursors executed by this application have remained open.