當您從較早的 SQL Server 安裝使用通用語言執行階段功能,SQL Server 2008 中或在 SQL Server 2008 R2 中執行應用程式、 指令碼或功能時,收到錯誤訊息: 「 發生的.NET Framework 錯誤 」

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:955629
徵狀
您從先前的 Microsoft SQL Server 安裝使用通用語言執行階段 (CLR) 功能執行的應用程式、 一個指令碼或某個功能時升級到 Microsoft SQL Server 2008 或 Microsoft SQL Server 2008 R2 後您會收到錯誤訊息類似下列的錯誤訊息:
msg 6522,層級 16,狀態 1,行 1

執行使用者定義的常式或彙總 routine name 時發生.NET Framework 錯誤:

System.InvalidOperationException: 在此內容中不允許資料存取。 可能是內容是函式方法不以 DataAccessKind.Read 或 SystemDataAccessKind.Read 標記、 是以取得資料的資料表數值函數,FillRow 方法從回呼或 UDT 驗證方法。

System.InvalidOperationException
比方說這個問題可能會發生在下列案例。

案例 1

您使用具有下列特性的方法:
  • 此方法使用 CLR 使用者定義函數、 使用者定義型別 (UDT) 方法或使用者定義彙總執行模擬。
  • 此方法使用大型物件 (LOB) 做為參數。
  • 方法不會在方法上使用 DataAccesKind.Read 屬性。

案例 2

您可以使用 INIT 方法 CLR 資料表值函數中執行模擬。

案例 3

您可以使用 FillRow 方法 CLR 資料表值函數中執行模擬。
發生的原因
之所以發生這個問題,因為是資料庫引擎功能在 SQL Server 2008 和 SQL Server 2008 R2 中的變更。
其他可行方案
如果要解決問題,如本文 < 徵狀 > 一節中案例所述,使用下列方法之一。

方法 1: 若要解決這個問題,在案例 1 和案例 2

如果要解決這個問題,將 DataAccessKind.Read 屬性加入至方法。

方法 2: 若要解決這個問題,在 [分析藍本 3

如果要解決這個問題,請執行下列動作:
  • 移除 FillRow 方法模擬。
  • 不使用 FillRow 方法存取外部資源。
  • 只可以使用資料表值函式的 INIT 方法存取外部資源。
参考
如需有關 DataAccessKind.Read 屬性與 CLR 常式的其他自訂屬性資訊,請造訪下列 Microsoft TechNet 網站:在資料庫引擎功能在 SQL Server 2008 中的重大變更有關請造訪下列 Microsoft TechNet 網站:
SQL Server 2008 資料庫引擎 sqlserver2008 sqlserver2k8 sqlsvr2008 sqlsvr2k8 SQL2008RelNoteDatabaseEngine

警告:本文為自動翻譯

內容

文章識別碼:955629 - 最後檢閱時間:03/19/2009 22:27:18 - 修訂: 2.1

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

  • kbmt sql2008relnotedatabaseengine sql2008relnote kbprogramming kbautomation kberrmsg kbtshoot kbexpertiseinter kbprb KB955629 KbMtzh
意見反應