When you use a file handle for FileStream access in a SQL Server 2008 transaction, the transaction may randomly fail to commit in Windows Vista or in Windows Server 2008

Article translations Article translations
Article ID: 953263 - View products that this article applies to.
Expand all | Collapse all

On This Page

SYMPTOMS

On a computer that is running Windows Vista or Windows Server 2008, when you use the OpenSqlFilestream API or the .NET SqlFilestream class to obtain a file handle for FileStream access in a transaction in Microsoft SQL Server 2008, the transaction may randomly fail to commit. When this problem occurs, one of the following errors is logged in the SQL Server Errorlog file:
  • 3910 (Transaction context in use by another session)
  • 3981 (The transaction operation cannot be performed because there are pending requests working on this transaction)
  • 3922 (Cannot enlist in the transaction because the transaction does not exist)
This problem occurs when the client computer is running an earlier Windows operating system. For example, the client computer is running Windows XP, Windows XP Professional x64 Edition, or Windows Server 2003.

The cause of this problem is not related to the FILESTREAM feature in SQL Server 2008. However, you typically encounter this problem when you use the FILESTREAM feature in SQL Server 2008.

CAUSE

This problem occurs because of an error in the Server service. The Server service incorrectly delays the request of closing file handles. Therefore, the transactions cannot commit.

RESOLUTION

A supported hotfix is now available from Microsoft. However, it is intended to correct only the problem that is described in this article. Apply it only to systems that are experiencing this specific problem. This hotfix may receive additional testing. Therefore, if you are not severely affected by this problem, we recommend that you wait for the next software update that contains this hotfix.

To resolve this problem immediately, contact Microsoft Customer Support Services to obtain the hotfix. For a complete list of Microsoft Customer Support Services telephone numbers and information about support costs, visit the following Microsoft Web site:
http://support.microsoft.com/contactus/?ws=support
Note In special cases, charges that are ordinarily incurred for support calls may be canceled if a Microsoft Support Professional determines that a specific update will resolve your problem. The usual support costs will apply to additional support questions and issues that do not qualify for the specific update in question.

Prerequisites

To apply this hotfix, you must be running Windows Vista Service Pack 1 or Windows Server 2008 on the computer.

Restart requirement

You have to restart the computer after you apply this hotfix.

Hotfix replacement information

This hotfix does not replace a previously released hotfix.

File information

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.

Windows Server 2008 and Windows Vista notes

The .manifest files and the .mum files that are installed in each environment are listed separately in the "Additional file information for Windows Server 2008 and for Windows Vista" section. These files and their associated .cat (security catalog) files are critical to maintaining the state of the updated component. The .cat files are signed with a Microsoft digital signature. The attributes of these security files are not listed.
For all supported x86-based versions of Windows Server 2008 and Windows Vista
Collapse this tableExpand this table
File nameFile versionFile sizeDateTimePlatform
Srv.sys6.0.6001.22187288,76824-May-200801:59x86
For all supported x64-based versions of Windows Server 2008 and Windows Vista
Collapse this tableExpand this table
File nameFile versionFile sizeDateTimePlatform
Srv.sys6.0.6001.22187452,09624-May-200802:29x64
For all supported Itanium-based versions of Windows Server 2008
Collapse this tableExpand this table
File nameFile versionFile sizeDateTimePlatform
Srv.sys6.0.6001.22187945,66424-May-200802:07IA-64

WORKAROUND

Important This section, method, or task contains steps that tell you how to modify the registry. However, serious problems might occur if you modify the registry incorrectly. Therefore, make sure that you follow these steps carefully. For added protection, back up the registry before you modify it. Then, you can restore the registry if a problem occurs. For more information about how to back up and restore the registry, click the following article number to view the article in the Microsoft Knowledge Base:
322756 How to back up and restore the registry in Windows
Warning This workaround will cause a performance issue when you operating on shared files in the system.


To work around this problem, set the value of the Cachedopenlimit registry entry to 0, and then restart the Server service. To do this, follow these steps:
  1. In Registry Editor, locate the following registry subkey:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Lanmanserver\Parameters
  2. Under the Parameters registry subkey, click Edit, click New, click DWORD Value, type Cachedopenlimit, and then press ENTER.
  3. Set the decimal value of the Cachedopenlimit registry entry to 0.
  4. Restart the Server service.
Note By default, the value of the Cachedopenlimit registry entry is 5, even though you did not set it.

Warning When you set the value to 0, file handles of all the shared files are not cached by the system. This can cause a performance issue when you are accessing shared files in the system.

STATUS

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

MORE INFORMATION

This problem also occurs in Windows XP x86-based versions, in Windows Server 2003, and in Windows XP Professional x64 Edition. For more information about this problem in Windows Server 2003 and in Windows XP Professional x64 Edition, click the following article number to view the article in the Microsoft Knowledge Base:
955280 When you use a Transact-SQL statement to operate on a FILESTREAM column in SQL Server 2008, the statement may randomly fail to commit and cause data corruption in Windows Server 2003 or in Windows XP Professional x64 Edition
For more information about this problem in Windows XP x86-based versions, click the following article number to view the article in the Microsoft Knowledge Base:
955567 Data corruption may occur when you try to append data to a FILESTREAM varbinary (max) column in SQL Server 2008 on a Windows XP-based computer

When to use the FILESTREAM storage

In SQL Server 2008, binary large object (BLOB) data can be the data of the VARBINARY(MAX) type that stores data in database tables. BLOB data can also be the data of the VARBINARY(MAX) FILESTREAM type that stores the data in the file system. The data size and the data usage determine whether you should use the database storage or the FILESTREAM storage. You should consider using the FILESTREAM storage when the following conditions are true:
  • On average, the BLOB data that you store is larger than 1 megabyte (MB).
  • Fast-read access is important.
  • You are developing applications that use a middle tier for the application logic.
If the BLOB data is less than 1 MB, you should consider using the database storage. The database storage frequently provides better streaming performance.

For more information, visit the following Microsoft Web site:
http://msdn.microsoft.com/en-us/library/bb933993.aspx
For more information about software update terminology, 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

Additional file information for Windows Vista and Windows Server 2008

The .manifest files and the .mum files that are installed in each environment are listed separately in the "Additional file information for Windows Server 2008 and for Windows Vista" section. These files and their associated .cat (security catalog) files are critical to maintaining the state of the updated component. The .cat files are signed with a Microsoft digital signature. The attributes of these security files are not listed.
Additional files for all supported x86-based versions of Windows Vista and of Windows Server 2008
Collapse this tableExpand this table
File nameFile versionFile sizeDateTimePlatform
Package_for_kb953263_client_1~31bf3856ad364e35~x86~~6.0.1.0.mumNot applicable1,36727-May-200817:10Not applicable
Package_for_kb953263_client~31bf3856ad364e35~x86~~6.0.1.0.mumNot applicable1,43027-May-200817:10Not applicable
Package_for_kb953263_sc_0~31bf3856ad364e35~x86~~6.0.1.0.mumNot applicable1,42127-May-200817:10Not applicable
Package_for_kb953263_sc~31bf3856ad364e35~x86~~6.0.1.0.mumNot applicable1,42227-May-200817:10Not applicable
Package_for_kb953263_server_0~31bf3856ad364e35~x86~~6.0.1.0.mumNot applicable1,42527-May-200817:10Not applicable
Package_for_kb953263_server~31bf3856ad364e35~x86~~6.0.1.0.mumNot applicable1,43027-May-200817:10Not applicable
X86_microsoft-windows-smbserver-v1_31bf3856ad364e35_6.0.6001.22187_none_da3188cc0fcbc888.manifestNot applicable4,62724-May-200810:39Not applicable
Additional files for all supported x64-based versions of Windows Vista and of Windows Server 2008
Collapse this tableExpand this table
File nameFile versionFile sizeDateTimePlatform
Amd64_microsoft-windows-smbserver-v1_31bf3856ad364e35_6.0.6001.22187_none_3650244fc82939be.manifestNot applicable4,89124-May-200806:01Not applicable
Package_for_kb953263_client_1~31bf3856ad364e35~amd64~~6.0.1.0.mumNot applicable1,37527-May-200817:10Not applicable
Package_for_kb953263_client~31bf3856ad364e35~amd64~~6.0.1.0.mumNot applicable1,43827-May-200817:10Not applicable
Package_for_kb953263_sc_0~31bf3856ad364e35~amd64~~6.0.1.0.mumNot applicable1,42927-May-200817:10Not applicable
Package_for_kb953263_sc~31bf3856ad364e35~amd64~~6.0.1.0.mumNot applicable1,43027-May-200817:10Not applicable
Package_for_kb953263_server_0~31bf3856ad364e35~amd64~~6.0.1.0.mumNot applicable1,43327-May-200817:10Not applicable
Package_for_kb953263_server~31bf3856ad364e35~amd64~~6.0.1.0.mumNot applicable1,43827-May-200817:10Not applicable
Additional files for all supported Itanium-based versions of Windows Server 2008
Collapse this tableExpand this table
File nameFile versionFile sizeDateTimePlatform
Ia64_microsoft-windows-smbserver-v1_31bf3856ad364e35_6.0.6001.22187_none_da332cc20fc9d184.manifestNot applicable4,88524-May-200809:07Not applicable
Package_for_kb953263_sc_0~31bf3856ad364e35~ia64~~6.0.1.0.mumNot applicable1,42527-May-200817:10Not applicable
Package_for_kb953263_sc~31bf3856ad364e35~ia64~~6.0.1.0.mumNot applicable1,42627-May-200817:10Not applicable
Package_for_kb953263_server_0~31bf3856ad364e35~ia64~~6.0.1.0.mumNot applicable1,42927-May-200817:10Not applicable
Package_for_kb953263_server~31bf3856ad364e35~ia64~~6.0.1.0.mumNot applicable1,43427-May-200817:10Not applicable

Properties

Article ID: 953263 - Last Review: January 15, 2009 - Revision: 3.0
APPLIES TO
  • Windows Server 2008 Datacenter
  • Windows Server 2008 Enterprise
  • Windows Server 2008 Standard
  • Windows Vista Business
  • Windows Vista Business 64-bit Edition
  • Windows Vista Enterprise
  • Windows Vista Home Basic
  • Windows Vista Home Premium
  • Windows Vista Ultimate
  • Windows Vista Enterprise 64-bit Edition
  • Windows Vista Home Basic 64-bit Edition
  • Windows Vista Home Premium 64-bit Edition
  • Windows Vista Ultimate 64-bit Edition
Keywords: 
kbsurveynew kbexpertiseadvanced kbhotfixserver kbautohotfix kbqfe kbfix KB953263

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