Microsoft KB Archive/116412

{|
 * width="100%"|

FIX: SQL Server FixList for Version 4.21.001
'Article ID: Q116412

Creation Date: 20-JUN-1994

Revision Date: 29-APR-1997' 

The information in this article applies to:

- Microsoft SQL Server version 4.21 for Windows NT The following is a list of fixes and other various improvements that have been made in SQL Server version 4.21.001. SQL Server version 4.21.001 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.21.001


 * FIX: Inconsistent Behavior During Arithmetic Overflow
 * FIX: CREATE TABLE Does Not Generate Warning Message
 * FIX: GPF if checktable on Float with NC Index
 * FIX: Stored Procedure With SELECT May Cause Access Violation
 * FIX: Trigger Still Fires if NULL Put in NOT NULL Column

Description of Problems Corrected in 4.21.001

FIX: Inconsistent Behavior During Artihmetic 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: 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: 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: 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: Trigger Still Fires if NULL Put in NOT NULL Column

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

SYMPTOMS

If a stored procedure attempts to insert or update a row in a table with a corresponding trigger, and the row violates the schema by putting a NULL into a NOT NULL column, the appropriate trigger will still fire and clear the @@error variable so that it cannot be captured in the stored procedure. There is no way of knowing that the INSERT or UPDATE failed.

WORKAROUND

Capture the error in the trigger and return it to the calling stored procedure using RAISEERROR.

MORE INFORMATION

If any other error occurs, such as a rule violation, the trigger does not fire. If the same commands are put into a script, the trigger does not fire.
 * }

-

 Additional query words:

Keywords : SSrvWinNT kbfixlist

Version : 4.21

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.

''