Microsoft distributes Microsoft SQL Server 2008 R2 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 2008 R2 fix release.
Symptoms
Consider the following scenario:
-
You have a database that contains a FILESTREAM filegroup in Microsoft SQL Server 2008 R2 or SQL Server 2008.
-
A database transaction opens and writes to a FILESTREAM file. The transaction uses buffing to perform these operations.
-
You close the FILESTREAM file before you commit the database transaction. Therefore, Windows may keep parts of the file in the file system cache.
-
A SQL Server command uses a nonbuffered access path to access the FILESTREAM file. For example, the SQL Server command is used in a backup operation or in a virus scan.
In this scenario, the SQL Server command stops responding.
Notes When this issue occurs, you may have to restart SQL Server to recover from this issue, or you may have to restart the computer to recover from this issue.Cause
This issue occurs because of an error in the FILESTREAM RsFx driver.
When an operation that does not use the buffering option requests an access path that is not cached, the NTFS file system locates the dirty $DATA segment in the cache, and then the NTFS file system requests the cached portions to be closed. The FILESTREAM RsFx driver detects the file close request. However, the driver finds that the first database transaction has not finished. Therefore, the FILESTREAM RsFx driver tries to flush the data, and a deadlock in System.exe occurs.Resolution
Service Pack 3 information for SQL Server 2008
To resolve this issue, obtain the Service Pack 3 for SQL Server 2008. For more information, see List of issues that are fixed by SQL Server 2008 Service Pack 3 and How to obtain the latest service pack for SQL Server 2008.
Cumulative update information
SQL Server 2008 R2 Service Pack 1
The fix for this issue was first released in Cumulative Update 1 for SQL Server 2008 R2 Service Pack 1. For more information about how to obtain this cumulative update package, click the following article number to view the article in the Microsoft Knowledge Base:
2544793 Cumulative Update package 1 for SQL Server 2008 R2 Service Pack 1Note Because the builds are cumulative, each new fix release contains all the hotfixes and all the security fixes that were included with the previous SQL Server 2008 R2 fix release. We recommend that you consider applying the most recent fix release that contains this hotfix. For more information, click the following article number to view the article in the Microsoft Knowledge Base:
2567616 The SQL Server 2008 R2 builds that were released after SQL Server 2008 R2 Service Pack 1 was released
SQL Server 2008 R2
The fix for this issue was first released in Cumulative Update 8. For more information about how to obtain this cumulative update package for SQL Server 2008 R2, click the following article number to view the article in the Microsoft Knowledge Base:
2534352 Cumulative Update package 8 for SQL Server 2008 R2 Note Because the builds are cumulative, each new fix release contains all the hotfixes and all the security fixes that were included with the previous SQL Server 2008 R2 fix release. We recommend that you consider applying the most recent fix release that contains this hotfix. For more information, click the following article number to view the article in the Microsoft Knowledge Base:
981356 The SQL Server 2008 R2 builds that were released after SQL Server 2008 R2 was released
Status
Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.
Workaround
To work around this issue, do not use buffering when you write to FILESTREAM files.
More Information
For more information about FILESTREAM data, visit the following MSDN website:
General information about FILESTREAM data
Call stack information
fffff880`01fa1760 fffff800`01489992 : fffffa80`090eb680 fffffa80`090eb680 00000000`00000000 fffffa80`00000008 : nt!KiSwapContext+0x7a
fffff880`01fa18a0 fffff800`0148c1af : fffffa80`090eb680 fffff800`015f6e80 fffff880`000000ca fffff880`014542c3 : nt!KiCommitThreadWait+0x1d2 fffff880`01fa1930 fffff800`014651de : 00000000`00000000 fffffa80`0000001b 00000000`00000000 fffff800`015f6e00 : nt!KeWaitForSingleObject+0x19f fffff880`01fa19d0 fffff800`0148a5cc : ffffffff`fd9da600 fffffa80`09dba410 fffffa80`0a4a2f98 fffffa80`093cc180 : nt!ExpWaitForResource+0xae fffff880`01fa1a40 fffff880`014c8ca1 : fffff8a0`023fcb40 fffffa80`0a61bf20 fffff880`01fa1c40 fffff880`00000002 : nt!ExAcquireResourceExclusiveLite+0x14f fffff880`01fa1ab0 fffff880`014c96b4 : fffffa80`0a8684e0 fffffa80`091c1190 fffffa80`0a61bf20 00000000`00000000 : Ntfs!NtfsCommonFlushBuffers+0x14d fffff880`01fa1b90 fffff880`01253bcf : fffffa80`091c1530 fffffa80`091c1190 fffffa80`0a8684e0 fffff880`01fa2c30 : Ntfs!NtfsFsdFlushBuffers+0x104 fffff880`01fa1c00 fffff880`01256aea : 00000000`00000000 00000000`00000000 fffffa80`0a269000 fffffa80`0a273b90 : fltmgr!FltpLegacyProcessingAfterPreCallbacksCompleted+0x24f fffff880`01fa1c90 fffff880`0128c1fd : fffffa80`093ca8f8 fffffa80`0941bf00 fffffa80`093ca800 fffffa80`0941bf00 : fltmgr!FltPerformSynchronousIo+0x2ca fffff880`01fa1d30 fffff880`0163b2ba : fffffa80`0941bf00 ffffffff`ffffff01 fffffa80`0a273c40 fffffa80`093c000f : fltmgr!FltFlushBuffers+0x2d fffff880`01fa1df0 fffff880`0164bf0c : fffffa80`0b907de8 fffff880`01fa2048 fffff880`01fa1f18 00000000`00000000 : RsFx0150!RsFxFltrPreCloseLogical+0x2ea fffff880`01fa1ed0 fffff880`01253067 : fffffa80`0941be60 fffff880`01fa2048 fffff880`01fa2020 fffffa80`090dc040 : RsFx0150!RsFxFltrPreMainDispatchCallback+0x58c fffff880`01fa1fd0 fffff880`01254329 : fffff880`01fa2100 00000000`00000002 fffffa80`00960500 fffffa80`0b453c00 : fltmgr!FltpPerformPreCallbacks+0x2f7 fffff880`01fa20d0 fffff880`012526c7 : fffffa80`0aefe620 fffffa80`093c72d0 fffffa80`092c87c0 00000000`00000000 : fltmgr!FltpPassThrough+0x2d9 fffff880`01fa2150 fffff800`0178088e : fffffa80`0a61bf20 fffffa80`093c5380 fffff8a0`09c90840 fffffa80`093c72d0 : fltmgr!FltpDispatch+0xb7 fffff880`01fa21b0 fffff800`0148e514 : 00000000`00000001 00000000`00000000 fffffa80`090f0080 fffffa80`0b453cf8 : nt!IopDeleteFile+0x11e fffff880`01fa2240 fffff800`01725f61 : 00000000`00000000 00000000`0008c081 fffffa80`0b453cb0 fffffa80`0b453cb0 : nt!ObfDereferenceObject+0xd4 fffff880`01fa22a0 fffff800`0145271b : fffffa80`0b453d30 00000000`00000000 fffffa80`0b453d30 fffffa80`0b453d30 : nt!MiSegmentDelete+0xa1 fffff880`01fa22e0 fffff800`01452e42 : 00000000`00000000 00000000`00000711 fffffa80`09eb6348 fffff8a0`023fcc00 : nt!MmPurgeSection+0x71b fffff880`01fa23d0 fffff880`014c19ef : fffffa80`0a4a2f68 fffffa80`09eb6300 00000000`00000000 fffffa80`00000000 : nt!CcPurgeCacheSection+0x172 fffff880`01fa2440 fffff880`014ef84e : fffffa80`09eb6300 fffff8a0`023fcc70 00000000`00000000 fffff8a0`023fcc01 : Ntfs!NtfsFlushAndPurgeScb+0x1bd fffff880`01fa24d0 fffff880`014ddfe5 : fffffa80`09eb6300 fffffa80`0a95ef20 fffffa80`093cc180 fffff8a0`023fced8 : Ntfs!NtfsOpenAttribute+0x80e fffff880`01fa25e0 fffff880`014d9e3b : fffff880`0785d4a0 fffffa80`09eb6300 fffff8a0`023fced8 fffff8a0`00000152 : Ntfs!NtfsOpenExistingAttr+0x145 fffff880`01fa26a0 fffff880`014dd09f : fffffa80`09eb6300 fffffa80`0a95ec10 fffff8a0`023fced8 fffff880`00000152 : Ntfs!NtfsOpenAttributeInExistingFile+0x5ab fffff880`01fa2830 fffff880`014ed166 : fffffa80`09eb6300 fffffa80`0a95ec10 fffff8a0`023fced8 00000000`00000701 : Ntfs!NtfsOpenExistingPrefixFcb+0x1ef fffff880`01fa2920 fffff880`014ea911 : fffffa80`09eb6300 fffffa80`0a95ec10 fffff880`01fa2af0 fffff880`01fa2b40 : Ntfs!NtfsFindStartingNode+0x5e6 fffff880`01fa29f0 fffff880`01448945 : fffffa80`09eb6300 fffffa80`0a95ec10 fffff880`0785d4a0 fffff800`0148c900 : Ntfs!NtfsCommonCreate+0x3e1 fffff880`01fa2bd0 fffff800`0148ea21 : fffff800`01736800 fffff800`01621600 fffffa80`090eb600 8b48fffd`00000000 : Ntfs!NtfsFspDispatch+0x26d fffff880`01fa2cb0 fffff800`01721cce : 0f26e818`4b8d586e fffffa80`090eb680 00000000`00000080 fffffa80`090969e0 : nt!ExpWorkerThread+0x111 fffff880`01fa2d40 fffff800`01475fe6 : fffff800`015f6e80 fffffa80`090eb680 fffffa80`090ebb60 000008bf`12ebc000 : nt!PspSystemThreadStartup+0x5a
The following table provides more information about the products or the tools that automatically check for this condition on your instance of SQL Server and about the versions of SQL Server against which that rule is evaluated.
Rule software |
Rule title |
Rule description |
Product versions against which the rule is evaluated |
|
System Center Advisor |
SQL Server missing update 2550552 to avoid deadlock involving filesystem and filestream driver |
System Center Advisor determines whether the instance of SQL Server is a build that does not include this fix. If the current build of SQL Server is earlier than the fixed build, System Center Advisor generates a warning for this instance of SQL Server. If you receive this warning from System Center Advisor, review the fix details in this article and apply the update that is applicable for this instance. |
SQL Server 2008 SQL Server 2008 R2 |