Article ID: 916950 - Last Review: November 2, 2007 - Revision: 1.9
FIX: You may experience heap corruption, and SQL Server 2000 may shut down with fatal access violations when you try to browse files in SQL Server 2000 Enterprise Manager on a Windows Server 2003 x64-based computer
Microsoft distributes Microsoft SQL
Server 2000 fixes as one downloadable file. Because the fixes are cumulative,
each new release contains all the hotfixes and all the security fixes that were
included with the previous SQL Server 2000 fix
Consider the following scenario. Microsoft SQL Server 2000
Enterprise Manager is running on a Microsoft Windows Server 2003 x64 Edition-based computer. You try to browse files, and you click the
ellipsis button (...) in any File dialog box
in SQL Server 2000 Enterprise Manager. In this scenario, you may experience
heap corruption, and SQL Server may shut down with fatal access
Other threads or objects such as Microsoft Component
Object Model (COM) objects may be loaded into SQL Server by using the sp_oacreate stored procedure. When this behavior occurs, OLEDB linked server
providers that run in-process, SQL Mail, or SQLXML may also be affected and may
cause the SQL Server process to shut down. Additionally, you may also
experience this problem on clustered instances.
This problem only affects the 32-bit editions of SQL
Server 2000 that run in the Windows on Windows 64 (WOW64) subsystem on Windows
Server 2003 x64
This heap corruption problem does not affect any one of
the SQL Server 2000 64-bit editions, such as those editions that run on IA-64
operating systems that use the Intel Itanium 2 architecture.
This problem does not affect 32-bit editions of SQL Server
that are on the WOW64 subsystem on IA-64 operating systems.
This problem does not affect any editions of Microsoft SQL
This problem may occur because of the xp_availablemedia system extended stored procedure. When you click the ellipsis
button (...) in the graphical user interface (GUI), the xp_availablemedia system extended stored procedure may be called to perform the
file browse operation. In a clustered instance, Enterprise Manager calls the sp_MSSharedFixedDisk stored procedure, and the sp_MSSharedFixedDisk stored procedure calls the xp_availablemedia system extended stored procedure.
You may not notice the
heap corruption until other threads use the default heap or until heap memory
is freed. Any module that runs inside the Sqlservr.exe process can share the
default heap in a process. Therefore, this kind of heap corruption can affect
Xpstar.dll and other modules in which the xp_availablemedia system extended stored procedure is compiled.
For a list
of all publicly released SQL Server 2000 Post-Service Pack hotfixes, see the
following article in the Microsoft Knowledge Base:
Cumulative list of the hotfixes
that are available for SQL Server 2000 SP4
The installer does not install this hotfix correctly on x64-based systems. This installation issue occurs when the following conditions are true:
The system uses the Advanced Micro Devices (AMD) AMD64 processor architecture or the Intel Extended Memory 64 Technology (EM64T) processor architecture.
Note This issue does not occur on systems that use the Intel Itanium processor architecture.
The system is running a 64-bit version of the Microsoft Windows Server operating system.
The system is running a 32-bit version of SQL Server 2000.
We have corrected this installation issue in later builds of SQL Server 2000, starting with version 8.00.2244. When a customer who is running SQL Server 2000 on an x64-based system requests this hotfix, we will provide a build that includes this hotfix and that can be installed correctly on an x64-based system. The build that we provide will be version 8.00.2244 or a later version.
A supported hotfix is available from Microsoft. However, this hotfix is intended to correct only the problem that is described in this article. Apply this hotfix only to systems that are experiencing this specific problem.
If the hotfix is available for download, there is a "Hotfix download available" section at the top of this Knowledge Base article. If this section does not appear, submit a request to Microsoft Customer Service and Support to obtain the hotfix.
Note If additional issues occur or if any troubleshooting is required, you might have to create a separate service request. The usual support costs will apply to additional support questions and issues that do not qualify for this specific hotfix. For a complete list of Microsoft Customer Service and Support telephone numbers or to create a separate service request, visit the following Microsoft Web site:
Note The "Hotfix download available" form displays the languages for which the hotfix is available. If you do not see your language, it is because a hotfix is not available for that language.
You must have Microsoft SQL Server 2000 Service Pack 4 (SP4)
installed to apply this hotfix.
For more information about how to obtain
SQL Server Service Pack 4, click the following article number to view the
article in the Microsoft Knowledge Base:
How to obtain the latest SQL Server 2000 service pack
After you install this hotfix, the SQL Server service will be automatically restarted.
You do not have to change the registry.
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 of all the
files that you must have to fully update a product to the latest
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 item in Control Panel.
To work around this problem, you may temporarily prevent the
use of the xp_availablemedia system extended stored procedure. To do this, use the following
if exists (select * from master.dbo.sysobjects where name = N'xp_availablemedia'
and type = N'X')
exec sp_dropextendedproc N'xp_availablemedia'
If you want to re-add the xp_availablemedia system extended stored procedure after you install the hotfix,
use the following code example.
If you remove the procedure, any call to the sp_MSSharedFixedDisk stored procedure fails, and any File dialog box
in SQL Server 2000 Enterprise Manager does not appear. You do not receive an
error message in DTS Designer. However, the File dialog boxes
do not appear. After you remove the xp_availablemedia system extended stored procedure, you must manually type the file
name or the folder location that you want. Also, after you remove the xp_availablemedia system extended stored procedure and you click the ellipsis
button (...) in SQL Server 2000 Enterprise Manager, you
receive the following error message in a Microsoft SQL-DMO (ODBC
SQLState: 42000) dialog box:
Error 2812: Could
not find stored procedure 'xp_availablemedia'.
Note The xp_availablemedia system extended stored procedure may be automatically re-added to
the SQL Server when any one of the following conditions is true:
You restore the master database.
You rebuild the master database by using the Rebuildm.exe
Typically, the ntdll!RtlpCoalesceFreeBlocks or ntdll!RtlFreeHeap functions are the functions that are victims at the top of the
thread stack when heap corruption occurs in the default heap. However, these
functions are not the only functions that this kind of heap corruption may
affect. Therefore, the access violation thread stack for any victim may vary.
Additionally, you cannot determine the cause of the heap corruption by
examining the victim thread stack alone, and the root cause of the heap
corruption may be caused by other factors that are not listed in this
For example, a call to the xp_availablemedia system extended stored procedure may resemble the following:
In SQL Server Enterprise Manager, you expand SQL
Server, you expand Management, you right-click
Backup, and then you click New Backup
In the Backup Device Properties - New
Device dialog box, you click the ellipsis button
(...) next to File name to locate a
The xp_availablemedia system extended stored procedure may also be called
programmatically by using SQL DMO. You call the EnumAvailableMedia method of a SQL Server DMO object together with a MediaType parameter value of SQLDMOMedia_All, SQLDMOMedia_Tape, or
SQLDMOMedia_SharedFixedDisk. Regardless of how you use the procedure, the
outcome may always be the same.
For more information, click the
following article number to view the article in the Microsoft Knowledge Base:
Description of the standard terminology that is used to describe
Microsoft software updates