FIX: The restore process may take longer to complete when SQL Server 2000 restores transaction log files as part of the log shipping process

Article translations Article translations
Article ID: 873482 - View products that this article applies to.
Bug #: 470244 (SQL Server 8.0)


Expand all | Collapse all

On This Page

Article contents

SUMMARY

This article describes the following about this hotfix release:
  • The issues that are fixed by this hotfix package.
  • The prerequisites for installing the hotfix package.
  • Whether you must restart your computer after you install the hotfix package.
  • Whether the hotfix package is replaced by any other hotfix package.
  • Whether you must make any registry changes.
  • The files that are contained in the hotfix package.

SYMPTOMS

When the transaction log files of your database are restored by using the WITH RECOVERY option as part of the log shipping process, you may notice that Microsoft SQL Server 2000 takes longer to complete the restore operation successfully than you expect.

For a list of previous hotfixes, see the "Microsoft SQL Server 2000 post-Service Pack 3 or Microsoft SQL Server 2000 post-Service Pack 3a hotfixes" section in the following Microsoft Knowledge Base article:
290211 How to obtain the most recent SQL Server 2000 service pack

RESOLUTION

Service pack information

To resolve this problem, obtain the latest service pack for Microsoft SQL Server 2000. For more information, click the following article number to view the article in the Microsoft Knowledge Base:
290211 How to obtain the latest SQL Server 2000 service pack

Hotfix information

Prerequisites

This hotfix requires Microsoft SQL Server 2000 Service Pack 3 (SP3). For information about how to obtain SQL Server 2000 SP3, see the following article in the Microsoft Knowledge Base:
290211 How to obtain the most recent SQL Server 2000 Service Pack

Restart information

You do not have to restart your computer after you apply this hotfix.

Hotfix file information

This hotfix contains only those files that are required to correct the issues that this article lists. This hotfix may not contain all the files that you must have to fully update a product to the latest build.

The English version of this hotfix has the file attributes (or later file attributes) that are listed in the following table. The dates and times for these files are listed in Coordinated Universal Time (UTC). When you view the file information, it is converted to local time. To find the difference between UTC and local time, use the Time Zone tab in the Date and Time tool in Control Panel.
   Date         Time   Version            Size    File name
   -------------------------------------------------------------------
   15-Jul-2004  16:12  2000.80.961.0     664,128  Autoplt.dll
   15-Jul-2004  16:27  2000.80.961.0      78,400  Console.exe
   15-Jul-2004  16:44  2000.80.961.0     315,968  Custtask.dll
   15-Jul-2004  16:12  2000.80.961.0      33,340  Dbmslpcn.dll
   08-Apr-2004  09:12                    786,432  Distmdl.ldf
   08-Apr-2004  09:12                  2,359,296  Distmdl.mdf
   10-Oct-2003  06:18                        180  Drop_repl_hotfix.sql
   15-Jul-2004  16:40  2000.80.961.0   1,905,216  Dtspkg.dll
   15-Jul-2004  16:37  2000.80.961.0     528,960  Dtspump.dll
   15-Jul-2004  16:53  2000.80.961.0   1,557,052  Dtsui.dll
   15-Jul-2004  16:52  2000.80.961.0     639,552  Dtswiz.dll
   10-Oct-2003  06:18                    747,927  Instdist.sql
   10-Oct-2003  06:18                      1,581  Inst_repl_hotfix.sql
   15-Jul-2004  16:59  2000.80.961.0     352,828  Isqlw.exe
   15-Jul-2004  16:53  2000.80.961.0      82,492  Itwiz.exe
   15-Jul-2004  16:11  2000.80.961.0      90,692  Msgprox.dll
   19-May-2004  11:13  8.11.40209.0      209,408  Mssdi98.dll
   15-Jul-2004  16:14  2000.80.961.0      62,024  Odsole70.dll
   15-Jul-2004  16:32  2000.80.961.0      25,144  Opends60.dll     
   15-Jul-2004  16:13  2000.80.961.0      57,904  Osql.exe
   15-Jul-2004  16:41  2000.80.961.0     279,104  Pfutil80.dll
   10-Oct-2003  06:07                    550,780  Procsyst.sql
   08-Apr-2004  09:12                     12,305  Qfe469315.sql
   08-Apr-2004  09:12                     19,195  Qfe469571.sql
   15-Jul-2004  17:43                  1,105,167  Replmerg.sql
   15-Jul-2004  16:21  2000.80.961.0     221,768  Replprov.dll
   15-Jul-2004  16:23  2000.80.961.0     307,784  Replrec.dll
   15-Jul-2004  16:14  2000.80.961.0     159,813  Replres.rll
   10-Oct-2003  06:18                  1,087,150  Replsys.sql
   10-Oct-2003  06:18                    986,603  Repltran.sql
   15-Jul-2004  16:27  2000.80.961.0     287,304  Rinitcom.dll
   15-Jul-2004  16:12  2000.80.961.0      78,416  Sdiclnt.dll
   15-Jul-2004  16:01  2000.80.961.0      66,112  Semmap.dll
   15-Jul-2004  16:06  2000.80.961.0      57,916  Semnt.dll
   15-Jul-2004  16:50  2000.80.961.0     492,096  Semobj.dll
   15-Jul-2004  16:45  2000.80.961.0     172,032  Semobj.rll
   15-Jul-2004  16:20  2000.80.961.0      53,832  Snapshot.exe
   13-Jul-2004  08:29                    117,834  Sp3_serv_uni.sql
   15-Jul-2004  16:06  2000.80.961.0      28,672  Sqlagent.dll
   15-Jul-2004  16:10  2000.80.961.0     311,872  Sqlagent.exe     
   15-Jul-2004  16:16  2000.80.961.0     168,001  Sqlakw32.dll
   15-Jul-2004  16:16  2000.80.961.0      33,344  Sqlctr80.dll
   15-Jul-2004  16:52  2000.80.961.0   4,215,360  Sqldmo.dll
   15-Jul-2004  16:19                     25,172  Sqldumper.exe    
   15-Jul-2004  16:02  2000.80.961.0      28,672  Sqlevn70.rll
   15-Jul-2004  16:22  2000.80.961.0     156,224  Sqlmaint.exe
   15-Jul-2004  16:25  2000.80.961.0     180,792  Sqlmap70.dll
   15-Jul-2004  16:50  2000.80.961.0     188,992  Sqlmmc.dll       
   15-Jul-2004  16:46  2000.80.961.0     479,232  Sqlmmc.rll
   15-Jul-2004  16:44  2000.80.961.0     401,984  Sqlqry.dll
   15-Jul-2004  16:23  2000.80.961.0      57,920  Sqlrepss.dll
   15-Jul-2004  16:16  2000.80.961.0   7,512,640  Sqlservr.exe
   15-Jul-2004  16:04  2000.80.961.0     590,396  Sqlsort.dll
   15-Jul-2004  16:24  2000.80.961.0      45,644  Sqlvdi.dll       
   15-Jul-2004  16:23  2000.80.961.0     106,588  Sqsrvres.dll     
   15-Jul-2004  16:12  2000.80.961.0      33,340  Ssmslpcn.dll
   15-Jul-2004  16:13  2000.80.961.0      82,492  Ssnetlib.dll
   15-Jul-2004  16:30  2000.80.961.0      25,148  Ssnmpn70.dll
   15-Jul-2004  16:25  2000.80.961.0     123,456  Stardds.dll
   15-Jul-2004  16:26  2000.80.961.0     158,240  Svrnetcn.dll
   15-Jul-2004  16:26  2000.80.961.0      76,416  Svrnetcn.exe
   15-Jul-2004  16:30  2000.80.961.0      53,808  Ums.dll
   15-Jul-2004  16:27  2000.80.961.0      98,872  Xpweb70.dll

Note Because of file dependencies, the most recent hotfix that contains these files may also contain additional files.

STATUS

Microsoft has confirmed that this is a bug in the Microsoft products that are listed in the "Applies to" section.

This problem was first corrected in Microsoft SQL Server 2000 Service Pack 4.

MORE INFORMATION

The SQL Server Agent job that corresponds to the log shipping process runs the xp_sqlmaint extended stored procedure that invokes the sqlmaint utility to restore the transaction log files.

The hotfix that is discussed in this article adds the following new parameters to the sqlmaint utility to help users speed up the restore process:
  • MaxTransferSize
  • BufferCount
To improve the performance of the restore operation, you can modify the SQL Server Agent job step that calls the xp_sqlmaint extended stored procedure. Include the MaxTransferSize and the BufferCount parameters as the input parameters for the extended stored procedure. A command line that specifys a 512 KB transfer size with 2 buffers appears as follows:
-MaxTransferSize 524288 -BufferCount 2

Factors that affect the speed of the restore process

Several factors can affect the speed of the restore process. You must consider the following factors when you are evaluating the performance of the restore process:
  • The memory blocks that are fetched in the data cache.
  • The Virtual log file size.
  • The parallel query processing operations.
More information about each of these factors follows.

The memory blocks that are fetched in the data cache


The data pages that correspond to your database are not in the SQL Server data cache at the time that you initiate the restore process. The restore process uses the read-ahead feature to issue the asynchronous I/O. Therefore, the required data pages are fetched from the memory to the data cache in advance.

The data pages are fetched from the memory to the data cache in memory blocks. By using the MaxTransferSize parameter of the sqlmaint utility, you can adjust the size of the memory block that is fetched from the memory to the data cache during the restore operation. The maximum value that can be set for the MaxTransferSize parameter is 4,194,304. Therefore, the maximum size of the memory block that can be fetched from the memory to the data cache is 4 MB.

Note The value that is set for the MaxTransferSize parameter must be a power of 2, and the value must be between 64 KB and 4 MB, specified in bytes.

The more the data is available to SQL Server for processing during the restore process, the more speed the restore process will have. By using the MaxTransferSize parameter, you can increase the buffer size that can be fetched from the memory to the data cache by the read ahead operation. This will help improve the performance of the restore process.

For more information about how to improve the capabilities of the read ahead features, click the following article number to view the article in the Microsoft Knowledge Base:
834451 FIX: Restoring transaction log files takes longer than expected in SQL Server 2000

The Virtual log file size

Each transaction log file is logically divided into smaller segments that are referred to as virtual log files. All the virtual log files are not necessarily of the same size, and they are not in the same physical memory order. Therefore, the size of the memory block that is fetched during the read ahead operation depends on the size of the current virtual log file. Increasing the value of the MaxTransferSize parameter may not have any effect on the speed of the restore process of the transaction log files that contain smaller virtual log files.

For optimal performance, we recommend that you manually shrink the transaction log files instead of letting Microsoft SQL Server 2000 automatically shrink the transaction log files. Additionally, you must set the file growth increment size or the file growth increment percentage to a reasonable size to prevent the transaction log file from growing by too small a value.

For more information, visit the following Microsoft Web site:
http://msdn2.microsoft.com/en-us/library/aa174524(SQL.80).aspx

The parallel query processing operations

This is an important factor when you are evaluating the performance of the restore operation. Because SQL Server accomplishes the restore operation by using a single execution thread, a parallel query processing operation that is recovered during the restore process takes longer. For example, a parallel query processing operation that takes 1 second to complete on an eight processor computer will take 8 seconds to complete during the restore process. Therefore, you must evaluate the requirements of the parallel query processing operations when you are backing up the log files by using the log shipping process.

The BufferCount parameter

The hotfix that is discussed in this article also includes an optional BufferCount parameter for the sqlmaint utility. You can use the BufferCount parameter to change the number of memory blocks that are the size as specified by the MaxTransferSize parameter and that are fetched by the read ahead feature at one instance. By default, the BufferCount parameter is set to 3.

However, note that the BufferCount parameter can be used only when you restore your SQL Server database. When you restore your SQL Server log, the log restore process disregards the value and it considers the default buffer count to be 3, even though you set the value of the BufferCount parameter to a value other than the default value.

Note The expression (BufferCount * MaxTransferSize) evaluates to the memory size that is fetched to the data cache. Therefore, maximizing these values may not always be a good solution. Make sure that you work with a reasonable memory goal.



For additional information about the naming schema for Microsoft SQL Server updates, click the following article number to view the article in the Microsoft Knowledge Base:
822499 New naming schema for Microsoft SQL Server software update packages
For additional information about the terminology that Microsoft uses when correcting software after it is released, click the following article number to view the article in the Microsoft Knowledge Base:
824684 Description of the standard terminology that is used to describe Microsoft software updates

Properties

Article ID: 873482 - Last Review: November 2, 2007 - Revision: 3.4
APPLIES TO
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 2000, Workgroup Edition
  • Microsoft SQL Server 2000 Desktop Engine (Windows)
  • Microsoft SQL Server 2000 Enterprise Edition 64-bit
Keywords: 
kbperformance kbcaching kbbug kbfix kbsqlserv2000presp4fix kbhotfixserver kbqfe KB873482

Give Feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com