Microsoft KB Archive/123978

{|
 * width="100%"|

FIX: SQL Server FixList for Version 4.21a
'Article ID: Q123978

Creation Date: 14-DEC-1994

Revision Date: 30-APR-1997' 

The information in this article applies to:


 * Microsoft SQL Server version 4.21a

The following is a list of fixes and other various improvements that have been made in SQL Server version 4.21a. SQL Server version 4.21a is now available from your primary support provider. For more information, contact your primary support provider.

Please note that workarounds have been provided for your information only. It is not necessary to implement these workarounds if you have the updated software.

List of Problems Corrected in 4.21a


 * FIX: Inconsistent Behavior During Arithmetic Overflow
 * FIX: GPF if checktable on Float with NC Index
 * FIX: RPC from SQL NT Fails After 60 Seconds
 * FIX: Stored Procedure with SELECT May Cause Access Violation
 * FIX: "LAZY WRITER" CMD in SYSPROCESSES is NULL Terminated
 * FIX: CREATE TABLE Does Not Generate Warning Message
 * FIX: MIPS: Local Variable & Select Distinct May Trigger GP Fault
 * FIX: SELECT MAX May Cause Access Vio. That Terminates Client

Description of Problems Corrected in 4.21a

FIX: Inconsistent Behavior During Arithmetic Overflow

ARTICLE ID: \[\[..\/\|Q\]\] BUG# NT: 527 (4.2)

SYMPTOMS

Inconsistent behavior is observed when an arithmetic overflow occurs involving a tinyint or smallint.

If ARITHABORT is OFF, a batch of Transact-SQL commands will be terminated if an arithmetic overflow occurs in which constant or integer values are used to produce a result which overflows a smallint or tinyint target variable. If two values of the same datatype as the target variable are used to cause an arithmetic overflow, then no error will be raised and the command batch will not be terminated.

For example, if the following triggers an overflow, the current batch will be aborted if @var1 is a tinyint and @var2 and @var3 are integers; however, it will continue if @var2 and @var3 are tinyints.

@var1 = @var2 * @var3 If ARITHABORT is ON, the command batch will not be terminated. FIX: GPF if checktable on Float with NC Index

ARTICLE ID: \[\[..\/\|Q\]\] BUG# NT: 699 (4.21 - NTMIPS)

700 (4.21 - NTALPHA) SYMPTOMS

On either a MIPS- or an Alpha-based computer, executing either DBCC checktable or DBCC checkdb will fail with an exception alignment fault. This occurs with only non-clustered indexes (unique or not unique) when the key attribute of the non-clustered index is a float or real datatype.

The following will replicate the behavior:

use pubs go  create table test(float_type float) go  create nonclustered index test on test(float_type) go  insert test values(1.0) go  dbcc checktable (test) go FIX: RPC from SQL NT Fails After 60 Seconds

ARTICLE ID: \[\[..\/\|Q\]\] BUG# NT: 694 (4.2)

SYMPTOMS

When executing a remote procedure call from a local SQL Server for Windows NT to a remote server or ODS application, the RPC execution fails. The client process receives either a nonsensical error message or is disconnected due to an access violation. The stored procedure will execute correctly if it is run directly on the remote server using a client application.

Possible errors include:

Access violations causing the client process to be disconnected Msg 7221 Message too long. Length = Msg 7221, login to site '' failed results never returned to front end, query must be canceled CAUSE

An RPC execution issued from NT SQL Server will timeout after 60 seconds of execution. This failure can result in a variety of error messages and behaviors depending on the number and timing of results ( if any ) being returned from the remote procedure.

WORKAROUND

Ensure that the total execution time of any remote stored procedure executed by a NT SQL Server is under 60 seconds.

FIX: Stored Procedure with SELECT May Cause Access Violation

ARTICLE ID: \[\[..\/\|Q\]\] BUG# NT: 703 (4.21 - NTALPHA)

SYMPTOMS

On SQL Server for Windows NT on DEC Alpha-based computers, a stored procedure may cause an access violation that terminates the client process if it selects into a local variable with a SELECT that uses an ORDER BY clause.

WORKAROUND

Create a clustered index on the temporary table using the columns in the ORDER BY. Then you can remove the ORDER BY and a table scan will give you the correct results.

MORE INFORMATION

Below is a script that demonstrates the problem:

use pubs go  drop proc sp1 go  create proc sp1 as   declare @v1 int create table #temp(  c1     int) select @v1=c1 from #temp order by c1  go   exec sp1 go FIX: "LAZY WRITER" CMD in SYSPROCESSES is NULL Terminated

ARTICLE ID: \[\[..\/\|Q\]\] BUG# NT: 690 (4.21)

SYMPTOMS

On SQL Server for Windows NT, the "LAZY WRITER" process has a null terminated string in the CMD column in SYSPROCESSES. All other processes, both system and user, are padded out with spaces to the full column length.

MORE INFORMATION

Some applications depend on the padded string behavior. SQL Administrator, for instance, will erroneously display the process as "LAZY WRITER UN" because of this null termination problem.

FIX: CREATE TABLE Does Not Generate Warning Message

ARTICLE ID: \[\[..\/\|Q\]\] BUG# NT: 545 (4.2)

SYMPTOMS

In the "Transact-SQL Language Reference" for Windows NT (page 241), it states under CREATE TABLE:

The maximum number of bytes per row is 1962. If you create tables with varchar or varbinary columns whose total defined width exceeds 1962 characters, a warning message appears, although the table is  created... The table is properly created, but SQL Server fails to post the warning message. FIX: MIPS: Local Variable & Select Distinct May Trigger GP Fault

ARTICLE ID: \[\[..\/\|Q\]\] BUG# NT: 835 (4.21 - NTMIPS)

SYMPTOMS

Assigning a value from SELECT DISTINCT to a local variable in a trigger will cause Access Violation on SQL Server for Windows NT on the MIPS-based computers.

The variable can be of any type. The statement that causes the access violation is:

select distinct @X= c1 from table where c1 = value. For example: create table tab1 (c1 int, c2 char(10)) go  create trigger tab1t on tab1 for update as   declare @x int select distinct @x1 = c1 from tab1 where c1 = 2 go  insert tab1 values (1, "test1") insert tab2 values (2, "test2") go  update tab1 set c2 = "test3" The error message received at the workstation is: Language_Exec: Process 5 generated access violation: SQL Server is terminating DB-library process Dead - Connection broken. This message implies that an access violation occurred for this process, and the server has terminated this process or this workstation connection. WORKAROUND

Redesign the statement not to have the combination between distinct and local variables.

For example: Select Distinct to a temp table, then in another query select from the temp table to the local variable.

'''FIX: SELECT MAX May Cause Access Vio. That Terminates Client'''

ARTICLE ID: \[\[..\/\|Q\]\] BUG# NT: 796 (4.2)

SYMPTOMS

Using the aggregate function MAX on a table may cause an access violation that terminates the client process.

The condition for this problem to happen is not easy to predict. It is caused by the optimizer trying to optimize the MAX aggregate using the index with id 0.

This problem does not happen with any other aggregate function or on a table with a clustered index.

WORKAROUND

The problem has been fixed in Microsoft SQL Server version 4.21a.

If an immediate upgrade is not applicable, you can sometimes work around the problem by changing the table name or creating a clustered index on the table.
 * }

-

 Additional query words:

Keywords : SSrvWinNT

Version : 4.21a

Platform : WINDOWS

Issue type : kbref

"THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED 'AS IS' WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY." '' ©1997 Microsoft Corporation. All rights reserved. Legal Notices.

''