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: Q105856 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: Q106132 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: Q112597 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: Q113067 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: Q114677 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.