Sie sind zurzeit offline. Es wird auf die erneute Herstellung einer Internetverbindung gewartet.

Wenn Sie eine Anwendung, ein Skript oder eine Funktion aus einer früheren SQL Server-Installation mit CLR-Features (Common Language Runtime) in SQL Server 2008 oder SQL Server 2008 R2 ausführen, wird eine Fehlermeldung angezeigt: ".NET Framework-Fehler"

Problembeschreibung
Wenn Sie nach der Aktualisierung auf Microsoft SQL Server 2008 oder Microsoft SQL Server 2008 R2 eine Anwendung, ein Skript oder eine Funktion aus einer früheren Microsoft SQL Server-Installation mit CLR-Features (Common Language Runtime) ausführen, wird eine Fehlermeldung mit etwa folgendem Inhalt angezeigt:
Msg 6522, Level 16, State 1, Line 1

.NET Framework-Fehler beim Ausführen der benutzerdefinierten Routine oder des benutzerdefinierten Aggregats Name der Routine:

System.InvalidOperationException: Datenzugriff ist in diesem Kontext nicht zulässig. Der Kontext ist eine Funktion oder Methode, die nicht mit "DataAccessKind.Read" oder "SystemDataAccessKind.Read" markiert ist, ein Rückruf zum Abrufen von Daten von der "FillRow"-Methode einer Tabellenwertfunktion oder eine UDT-Überprüfungsmethode.

System.InvalidOperationException
Das Problem kann z. B. in den folgenden Szenarien auftreten.

Szenario 1

Sie verwenden eine Methode mit den folgenden Merkmalen:
  • Die Methode verwendet eine benutzerdefinierte CLR-Funktion, eine benutzerdefinierte Methode (UDT) oder ein benutzerdefiniertes Aggregat, die bzw. das einen Identitätswechsel durchführt.
  • Die Methode verwendet ein LOB (Large Object) als Parameter.
  • Die Methode verwendet nicht die DataAccesKind.Read-Eigenschaft.

Szenario 2

Sie verwenden die Methode INIT in einer CLR-Tabellenwertfunktion, die einen Identitätswechsel durchführt.

Szenario 3

Sie verwenden die Methode FillRow in einer CLR-Tabellenwertfunktion, die einen Identitätswechsel durchführt.
Ursache
Das Problem tritt aufgrund einer Änderung in den Features des Datenbankmoduls in SQL Server 2008 und SQL Server 2008 R2 auf.
Abhilfe
Als Problemumgehung für die im Abschnitt "Problembeschreibung" aufgeführten Szenarien wenden Sie folgende Methoden an.

Methode 1: Problemumgehung für Szenario 1 und Szenario 2

Um das Problem zu umgehen, fügen Sie die Eigenschaft DataAccessKind.Read zur Methode hinzu.

Methode 2: Problemumgehung für Szenario 3

Gehen Sie folgendermaßen vor, um dieses Problem zu umgehen:
  • Entfernen Sie den Identitätswechsel aus der Methode FillRow.
  • Greifen Sie nicht unter Verwendung der Methode FillRow auf externe Ressourcen zu.
  • Greifen Sie auf externe Ressourcen nur mit der Methode INIT der Tabellenwertfunktion zu.
Informationsquellen
Weitere Informationen zur Eigenschaft DataAccessKind.Read und anderen benutzerdefinierten Attributen für CLR-Routinen finden Sie auf der folgenden Microsoft TechNet-Website: Informationen zu wichtigen Änderungen in den Datenbankmodulfeatures in SQL Server 2008 finden Sie auf der folgenden Microsoft TechNet-Website:
"SQL Server 2008 Database Engine" sqlserver2008 sqlserver2k8 sqlsvr2008 sqlsvr2k8 SQL2008RelNoteDatabaseEngine
Eigenschaften

Artikelnummer: 955629 – Letzte Überarbeitung: 05/28/2010 08:55:34 – Revision: 2.2

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

  • sql2008relnotedatabaseengine sql2008relnote kbprogramming kbautomation kberrmsg kbtshoot kbexpertiseinter kbprb KB955629
Feedback
&t=">