Recibe un mensaje de error cuando ejecuta una aplicación, la secuencia de comandos o la funcionalidad de una instalación anterior de SQL Server que utiliza características comunes de tiempo de ejecución de lenguaje de SQL Server 2008 o en SQL Server 2008 R2: "se ha producido un error de .NET Framework"

Seleccione idioma Seleccione idioma
Id. de artículo: 955629 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Síntomas

Después de actualizar a Microsoft SQL Server 2008 o a Microsoft SQL Server 2008 R2, cuando se ejecuta una aplicación, una secuencia de comandos o una funcionalidad desde una instalación anterior de Microsoft SQL Server que utiliza características de runtime (CLR) de lenguaje común, recibirá un mensaje de error similar mensaje de error siguientes:
Msj 6522, nivel 16, estado 1, línea 1

Error de .NET Framework durante la ejecución de rutina definido por el usuario o agregado routine name:

System.InvalidOperationException: No se permite el acceso de datos en este contexto. Ya sea el contexto es una función o método no marcado con DataAccessKind.Read o SystemDataAccessKind.Read, es una devolución de llamada para obtener datos desde el método FillRow de una función con valores de tabla o es un método de validación de tipo definido por el usuario.

System.InvalidOperationException
Por ejemplo, este problema puede producirse en los siguientes escenarios.

Escenario 1

Utilice un método que tiene las siguientes características:
  • El método utiliza una función definida por el usuario CLR, un método de tipo definido por el usuario (UDT) o un agregado definido por el usuario que lleva a cabo la suplantación.
  • El método utiliza un objeto grande (LOB) como parámetro.
  • El método no utiliza la propiedad DataAccesKind.Read en el método.

Escenario 2

Utilice el método INIT en una función con valores de tabla CLR que lleva a cabo la suplantación.

Escenario 3

Utilice el método FillRow en una función con valores de tabla CLR que lleva a cabo la suplantación.

Causa

Este problema se produce debido a un cambio en las características del motor de base de datos de SQL Server 2008 y en SQL Server 2008 R2.

Solución

Para evitar el problema tal y como se describe en los escenarios en la sección "Síntomas", utilice uno de los métodos siguientes.

Método 1: Para evitar este problema en el escenario 1 y en el escenario 2

Para evitar este problema, agregue la propiedad DataAccessKind.Read al método.

Método 2: Para evitar este problema en el escenario 3

Para evitar este problema, realice lo siguiente:
  • Quite la suplantación del método FillRow.
  • No tienen acceso a recursos externos mediante el uso del método FillRow.
  • Acceso a recursos externos sólo mediante el método INIT de la función de valores de tabla.

Referencias

Para obtener información acerca de la propiedad DataAccessKind.Read y otros atributos personalizados para rutinas CLR, visite el siguiente sitio Web de Microsoft TechNet:
http://technet.microsoft.com/en-us/library/ms131050.aspx
Para obtener información acerca de cambios importantes en las características del motor de base de datos de SQL Server 2008, visite el siguiente sitio Web de Microsoft TechNet:
http://technet.microsoft.com/en-us/library/ms143179(SQL.100).aspx

Propiedades

Id. de artículo: 955629 - Última revisión: jueves, 19 de marzo de 2009 - Versión: 2.1
La información de este artículo se refiere a:
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Express
  • Microsoft SQL Server 2008 Express with Advanced Services
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Web
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Express
  • Microsoft SQL Server 2008 R2 Express with Advanced Services
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Standard Edition for Small Business
  • Microsoft SQL Server 2008 R2 Workgroup
Palabras clave: 
kbmt sql2008relnotedatabaseengine sql2008relnote kbprogramming kbautomation kberrmsg kbtshoot kbexpertiseinter kbprb KB955629 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 955629

Enviar comentarios

 

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