Is This Content Helpful?
We're glad to know this article was helpful.
When editing or displaying spatial data stored using SQL Server native spatial types, ArcGIS client applications may encounter the following errors:
Could not complete cursor operation because the table schema changed after the cursor was declared.
The app domain with specified version id (%d) was unloaded due to memory pressure and could not be found.
[Microsoft][SQL Server Native Client 11.0][SQL Server]There are no rows in the current fetch buffer.
In the SQL Server error logs, the error is usually related to memory pressure forcing the Common Language Runtime (CLR) application domain to unload.
Note: By default, the error log is found in the following folder location: C:\Program Files\Microsoft SQL Server\MSSQL##.MSSQLSERVER\MSSQL\Log
Microsoft SQL Server spatial types are heavily dependent on the CLR. When the application domain hosting the CLR data is unloaded, this is treated as a schema change to the database engine and may result in errors while displaying and editing feature classes stored using either the geometry or geography types.
As the errors indicate, this is a memory issue within SQL Server that forces the CLR application domain hosting the spatial type to unload.
In earlier versions of SQL Server (SQL Server 2005, SQL Server 2008, and SQL Server 2008 R2) the limits of physical memory that the buffer pool consumes are determined by the max server memory (MB) and min server memory (MB) configuration options. CLR allocations, including the SQL CLR heaps and its global allocations that are created during CLR initialization, are not determined by these configuration options.
Starting with SQL Server 2012, single-page, multi-page, and CLR allocations are consolidated into an "any size" page allocator, and it is included in memory limits controlled by max server memory (MB) and min server memory (MB) configuration options. This change provides a more accurate sizing ability for all memory requirements that go through the SQL Server Memory Manager. If SQL Server Memory Manager notices a low memory situation, it can start unloading pages from memory. CLR allocations are considered a lower priority and are therefore more likely to be unloaded.
This is valuable information when deciding how much memory must be allocated using the max server memory (MB) and min server memory (MB) configuration options. By default, the max server memory is 2147483647 MB, or all of the available memory on the server. It is important to set the max server memory configuration option to a value that restricts SQL Server memory consumption to allow other processes like the operating system to have access to adequate memory. Although seemingly counter-intuitive, reducing the SQL Server memory pool allows other processes or applications to consume the memory needed without impacting the memory allocated to SQL Server. If all memory on the server is allocated to SQL Server, memory pressure errors are more likely to occur.
Microsoft indicates there is ongoing work to fix more general CLR out-of-memory issues. If any of the aforementioned errors are encountered while using ArcGIS, or are found in the SQL Server error logs, it is recommended to call Microsoft Support to further investigate the root cause of the error.
When calling Microsoft Support about this issue, provide Incident #114080611682006 and Defect #3374271 to the support analyst.
Knowledge Base Note: This article was previously documented as KB 43036.