An application that uses the Virtual Device Interface feature of SQL Server 2000 to back up a SQL Server 2000 database may not back up the database (903646)



The information in this article applies to:

  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Developer Edition 64 bit
  • Microsoft SQL Server 2000 Enterprise Edition 64-bit

SYMPTOMS

An application that uses the Virtual Device Interface feature of Microsoft SQL Server 2000 to back up a SQL Server 2000 database may not back up the database. When the backup operation fails, you experience the following exception:

HRESULT 0x80070005

Additionally, an error message that is similar to the following error message is logged in the VDI.log file:
Date Time pid(3260) tid(4004)
Error on VIRTUALDEVICE_master
Error at CVDS::Create: Create Memory Status Code: 5, x5
Explanation: Access is denied.
You typically experience this issue when multiple instances of the application that uses the Virtual Device Interface feature try to connect at the same time to different instances of SQL Server to initiate backups.

CAUSE

This issue occurs because the instances of the application that uses the Virtual Device Interface feature pass the same virtual device name to the IClientVirtualDeviceSet2::CreateEx function at the same time. SQL Server uses that virtual device name as the memory-mapped file name when SQL Server sets up shared memory for backup. This naming conflict causes the backup to fail.

RESOLUTION

To resolve this issue, generate a GUID as part of a virtual device name. An application that uses the Virtual Device Interface feature must provide a unique identifier on the computer for the virtual device name.

MORE INFORMATION

You can configure an application that uses the Virtual Device Interface feature to use the database name as the virtual device name. You can guarantee uniqueness in a single instance of SQL Server when you use the database name as the virtual device name. However, if you have multiple instances of SQL Server, the different instances create duplicate names. For example, each instance of SQL Server will have a master database, an msdb database, and a model database. If you rely on the database name as the virtual device name, you experience the issue that is described in this article when you schedule backups of these databases at the same time.

Modification Type:MajorLast Reviewed:8/19/2005
Keywords:kbtshoot kbprb KB903646 kbAudITPRO kbAudDeveloper