Español

Problema: Los clientes de ArcGIS encuentran errores relacionados con los cambios en el esquema de la tabla, la descarga del dominio de la aplicación o la recuperación de búferes cuando trabajan con tipos espaciales nativos de SQL Server

Descripción

Al editar o visualizar datos espaciales almacenados utilizando los tipos espaciales nativos de SQL Server, las aplicaciones cliente de ArcGIS pueden encontrar los siguientes errores:

Error:
No se pudo completar la operación del cursor porque el esquema de la tabla cambió después de haber declarado el cursor.
 
Error:
El dominio de la aplicación con el Id. (%d) de versión especificado se descargó debido a la presión de la memoria y no se puede encontrar.
 
Error:
[Microsoft][SQL Server Native Client 11.0][SQL Server]No hay filas en el búfer de recuperación actual.

En los registros de errores de SQL Server, el error está relacionado generalmente con la presión de la memoria, que obliga a descargar el dominio de la aplicación Common Language Runtime (CLR).

Nota:
De forma predeterminada, el registro de errores se encuentra en la siguiente ubicación de carpeta: 
C:\Archivos de programa\Microsoft SQL Server\MSSQL##.MSSQLSERVER\MSSQL\Log

Causa

Los tipos espaciales de Microsoft SQL Server dependen en gran medida del CLR. Cuando el dominio de la aplicación que aloja los datos CLR se descarga, se considera como un cambio de esquema en el motor de la base de datos y puede dar lugar a errores al visualizar y editar clases de entidad almacenadas utilizando los tipos de geometría o geografía.

Como indican los errores, este es un problema de memoria dentro de SQL Server que obliga a descargar el dominio de la aplicación CLR que aloja el tipo espacial.

Solución o solución alternativa

En versiones anteriores de SQL Server (SQL Server 2005, SQL Server 2008 y SQL Server 2008 R2) los límites de memoria física que consume el grupo de búferes están determinados por las opciones de configuración de memoria máxima del servidor (MB) y memoria mínima del servidor (MB). Las asignaciones de CLR, incluido el almacenamiento dinámico de CLR SQL y sus asignaciones globales creadas durante la inicialización de CLR, no están determinadas por estas opciones de configuración.

A partir de SQL Server 2012, las asignaciones de una sola página, de varias páginas y de CLR se consolidan en un asignador de páginas de "cualquier tamaño" y se incluyen en los límites de memoria controlados por la memoria máxima del servidor (MB) y la memoria mínima del servidor (MB). Este cambio proporciona una capacidad de redimensionamiento más precisa para todos los requisitos de memoria que se obtienen mediante el administrador de memoria de SQL Server. Si el administrador de memoria de SQL Server aprecia una situación de poca memoria, puede comenzar a descargar páginas de la memoria. Las asignaciones de CLR se consideran de prioridad más baja y, por lo tanto, es más probable que se descarguen.

Esta es una información valiosa para decidir cuánta memoria se debe asignar utilizando las opciones de configuración de memoria máxima del servidor (MB) y memoria mínima del servidor (MB). De forma predeterminada, la memoria máxima del servidor es 2147483647 MB, o toda la memoria disponible en el servidor. Es importante establecer la opción de configuración de la memoria máxima del servidor en un valor que restrinja el consumo de memoria de SQL Server para permitir que otros procesos como el sistema operativo tengan acceso a la memoria adecuada. Aunque parezca contrario a la intuición, la reducción del grupo de memoria de SQL Server permite que otros procesos o aplicaciones consuman la memoria necesaria sin afectar a la memoria asignada a SQL Server. Si toda la memoria del servidor está asignada a SQL Server, es más probable que ocurran errores de presión de memoria.

  • En las versiones 2005, 2008 y 2008 R2 de SQL Server, una configuración incorrecta de la memoria máxima del servidor puede permitirle al administrador de memoria ver y controlar gran parte de la memoria total del servidor para que sea utilizada por el grupo de búferes. Las asignaciones de CLR se realizarían desde la memoria disponible restante, lo que podría dejar muy poca memoria para el CLR.
  • En SQL Server 2012 o versiones posteriores, la estrategia de administración de memoria puede ser diferente. Dado que las asignaciones de memoria de CLR están ahora controladas por las opciones de configuración de la memoria del servidor, se puede establecer una memoria máxima del servidor más alta que en las versiones anteriores de SQL Server.
  • Desde SQL Server 2016, se invoca la implementación nativa de varios métodos espaciales, lo que ha mejorado el rendimiento y reducido aún más los errores de presión de memoria basados en CLR.
Considere si, además de SQL Server, se ejecutan otras aplicaciones o procesos en el sistema y cuánta memoria hay realmente disponible en el servidor. Es posible que no haya suficiente memoria instalada en el servidor para gestionar las operaciones de SQL Server junto con las requeridas por el sistema operativo. Otras aplicaciones pueden estar usando memoria física que debería estar disponible para SQL Server. Generalmente se recomienda que SQL Server tenga su propio servidor dedicado. Otras aplicaciones que compiten por la memoria, como ArcGIS, deben instalarse en equipos diferentes.

Microsoft ha comunicado que hay trabajos en curso para solucionar más problemas generales de falta de memoria de CLR. Si aparece alguno de los errores mencionados anteriormente al utilizar ArcGIS o si aparecen en los registros de errores de SQL Server, se recomienda ponerse en contacto con el Soporte técnico de Microsoft para investigar más a fondo la raíz del error.

Cuando llame al Soporte técnico de Microsoft sobre este problema, proporcione el número de Incidente 114080611682006 y el número de Defecto 3374271 al analista de soporte.
 

Nota de la Base de conocimiento:
Este artículo fue documentado anteriormente como KB 43036.