Vous recevez un message d'erreur lorsque vous exécutez une application, le script ou la fonctionnalité d'une installation antérieure de SQL Server qui utilise les fonctionnalités de runtime de langage commun dans SQL Server 2008 ou dans SQL Server 2008 R2: «une erreur .NET Framework s'est produite»

Traductions disponibles Traductions disponibles
Numéro d'article: 955629 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Symptômes

Après mise à niveau vers Microsoft SQL Server 2008 ou Microsoft SQL Server 2008 R2, lorsque vous exécutez une application, d'un script ou d'une fonctionnalité à partir d'une installation antérieure de Microsoft SQL Server qui utilise les fonctionnalités de runtime (CLR) de langage commun, vous recevez un message d'erreur semblable message d'erreur suivantes :
Msg 6522, niveau 16, état 1, ligne 1

Une erreur .NET Framework s'est produite pendant l'exécution de routine défini par l'utilisateur ou routine name de regroupement :

System.InvalidOperationException : l'accès aux données n'est pas autorisé dans ce contexte. Soit le contexte est une fonction ou méthode non marquée avec DataAccessKind.Read ou SystemDataAccessKind.Read, est un rappel pour obtenir des données à partir de la méthode FillRow d'une fonction table ou est une méthode de validation UDT.

System.InvalidOperationException
Par exemple, ce problème peut se produire dans les scénarios suivants.

Scénario 1

Vous utilisez une méthode qui présente les caractéristiques suivantes :
  • La méthode utilise une fonction CLR définie par l'utilisateur, une méthode de type défini par l'utilisateur (UDT) ou un agrégat défini par l'utilisateur qui effectue l'emprunt d'identité.
  • La méthode utilise un objet volumineux (LOB) en tant que paramètre.
  • La méthode n'utilise pas la propriété DataAccesKind.Read sur la méthode.

Scénario 2

Vous utilisez la méthode INIT d'une fonction table CLR qui effectue l'emprunt d'identité.

Scénario 3

Vous utilisez la méthode FillRow dans une fonction table CLR qui effectue l'emprunt d'identité.

Cause

Ce problème se produit à cause d'une modification dans les fonctionnalités du moteur de base de données dans SQL Server 2008 et dans SQL Server 2008 R2.

Contournement

Pour contourner le problème comme décrit dans les scénarios proposés dans la section "Symptômes de cet" article, appliquez l'une des méthodes suivantes.

Méthode 1: Pour contourner ce problème dans le scénario 1 et dans le scénario 2

Pour contourner ce problème, ajoutez la propriété DataAccessKind.Read à la méthode.

Méthode 2: Pour contourner ce problème dans le scénario 3

Pour contourner ce problème, procédez comme suit :
  • Supprimez l'emprunt d'identité de la méthode FillRow.
  • N'accédez pas à des ressources externes à l'aide de la méthode FillRow.
  • Accéder aux ressources externes uniquement à l'aide de la méthode INIT de la fonction table.

Références

Pour informations sur la propriété DataAccessKind.Read et autres attributs personnalisés pour les routines CLR, reportez-vous au site de le Microsoft TechNet Web suivant :
http://technet.microsoft.com/en-us/library/ms131050.aspx
Pour plus d'informations sur les modifications avec rupture dans les fonctionnalités du moteur de base de données dans SQL Server 2008, reportez-vous au site de le Microsoft TechNet Web suivant :
http://technet.microsoft.com/en-us/library/ms143179(SQL.100).aspx

Propriétés

Numéro d'article: 955629 - Dernière mise à jour: jeudi 19 mars 2009 - Version: 2.1
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • 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
Mots-clés : 
kbmt sql2008relnotedatabaseengine sql2008relnote kbprogramming kbautomation kberrmsg kbtshoot kbexpertiseinter kbprb KB955629 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 955629
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

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