SQL Server Q&A

As a software engineer, I focus on .NET, especially asp.net, C#, WCF and so on, and I am also very interested in Search Engine Optimization.

Entries Tagged ‘Query’

FIX: Very Large Numbers of Predicates AND-ed Together May Cause Stack Overflow

Symptoms
A query that contains a large number of predicates that are AND-ed together may cause a stack overflow exception. Several thousand conditions are typically required for this problem to occur, and you may reach a limit on the maximum batch size of your query tool before encountering this situation. Many query tools limit batches to 128 KB, whereas SQL Server 7.0 now accepts a batch size as large as (65536 * network packet size).
Resolution
During optimization, memory for selectivity calculation was being allocated from the stack. This allocation depends on the number of nodes being AND-ed together and can result in a stack overflow.

FIX: SQL Server 2000 stops responding when you cancel a query or when a query time-out occurs, and error messages are logged in the SQL Server error log file

Symptoms
This article describes the following about this hotfix release:The issues that are fixed by the hotfix packageThe prerequisites for installing the hotfix packageWhether you must restart the computer after you install the hotfix packageWhether the hotfix package is replaced by any other hotfix packageWhether you must make any registry changesThe files that are contained in the hotfix package
Resolution
In rare situations, MicrosoftSQL Server 2000 stops responding when you cancel a query or when a query time-out occurs. Additionally, error messages that resemble the following are logged in the SQL Server error log file:

2006-07-06 11:04:11.82 spid59clean_tables_xact: active sdes for tabid 457768688
2006-07-06 11:04:12.23 spid59Using ‘dbghelp.dll’ version ‘4.0.5′ *Stack Dump being sent to e:\fastnet\MSSQL\log\SQLDump0009.txt
2006-07-06 11:04:12.51 spid59Error: 0, Severity: 19, State: 0
2006-07-06 11:04:12.51 spid59SqlDumpExceptionHandler: Process 59 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process..
* BEGIN STACK DUMP: *07/06/06 11:04:12 spid 59
*Exception Address = 00402836
*Exception Code= c0000005 EXCEPTION_ACCESS_VIOLATION
*Access Violation occurred writing address 00000004
* Input Buffer 514 bytes -
<Some query statements>
*******************************************************************************
* Short Stack Dump
* 00402836 Module(sqlservr+00002836)
* 00407EF3 Module(sqlservr+00007EF3)
* 0041CB9F Module(sqlservr+0001CB9F)
* 00414C76 Module(sqlservr+00014C76)
* 00404F9D Module(sqlservr+00004F9D)
* 006E732B Module(sqlservr+002E732B) (SQLExit+0017F834)
* 00642592 Module(sqlservr+00242592) (SQLExit+000DAA9B)
* 0049C46A Module(sqlservr+0009C46A)
* 41075309 Module(ums+00005309) (ProcessWorkRequests+000002D9 Line 456+00000000)
* 41074978 Module(ums+00004978) (ThreadStartRoutine+00000098 Line 263+00000007)
* 7C34940F Module(MSVCR71+0000940F) (endthread+000000AA)
* 7C57438B Module(KERNEL32+0000438B) (TlsSetValue+000000F0)
2006-07-06 11:04:31.18 spid59Stack Signature for the dump is 0×79DB129D
2006-07-06 11:04:31.34 spid59clean_tables_xact: active sdes for tabid 457768688
2006-07-06 11:06:01.39 serverStack Signature for the dump is 0×00000000
2006-07-06 11:06:01.39 serverError: 17883, Severity: 1, State: 0
2006-07-06 11:06:01.39 serverProcess 53:0 (b68) UMS Context 0×27F80DE8 appears to be non-yielding on Scheduler 1.This problem occurs if the following conditions are true: The query performs operations on binary large object (BLOB) data types. Examples of binary large object data types include the Text data type, the NText data type, and the Image data type. The query contains the UNION operator or the OUTER JOIN operator. The query spends significant time processing the binary large object data types.

FIX: SELECT * FROM SYSINDEXES on a database that is upgraded to SQL Server 2000 may cause an access violation

Symptoms
Executing a SELECT * FROM SYSINDEXES query against a database that has been upgraded from Microsoft SQL Server 7.0 may cause an Access Violation. If an Access Violation occurs, an error message similar to the following displays in the query window:

ODBC: Msg 0, Level 19, State 1
SqlDumpExceptionHandler: Process 51 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process.
Server: Msg 1203, Level 20, State 1, Line 1
Process ID 51 attempting to unlock unowned resource KEY: 7:2:1 (790023da5d09).
Resolution
The maximum length defined for the keys column in the sysindexes system table in SQL Server 2000 is 1088, while in SQL Server 7.0, it is only 816. When a database is upgraded from SQL Server 7.0, the maximum length defined for the keys column is not updated. As a result, when an index whose keys column exceeds 816 bytes is created and the index is subsequently fetched, as in a SELECT * FROM SYSINDEXES query, the prefetch buffer is written past the 816 bytes that have been allocated, which causes the Access Violation.

FIX: Query Using Nested IN and a CASE Clause Causes an Access Violation

Symptoms
Running a query with two or more nested IN clauses and a CASE statement may cause the connection to be broken and the following error to be returned:

ODBC: Msg 0, Level 19, State 1
SqlDumpExceptionHandler: Process 7 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process.Connection Broken
Resolution
The query caused a handled exception in SQL Server, and the process was stopped.

FIX: Parallel Query That Has Many Bit Columns May Cause Access Violation

Symptoms
If a query that returns many bit columns is run as a parallel query and the row size passed through one of the Parallelism physical operators in the plan exceeds approximately 8 KB in size, a handled access violation may occur.
Resolution
A Parallelism physical operator is limited to handling a row size greater than approximately 8 KB in size, and normally such plans are excluded from being run as a parallel plan. Due to a bug in the calculation of the row size when handling bit columns, the query is incorrectly allowed to run in parallel but overflows a buffer allocated for transferring the data between threads.

FIX: Exception Error Caused by WHERE Clause with OR Logical Operator with Third Party OLEDB Provider

Symptoms
When you execute a linked server query that contains the OR
logical operator in the WHERE clause, an access violation may occur.
Resolution
The predicate is being identified as a RangePoint but the copy out
code to handle a RangePoint is missing.