DataReader.GetFieldType(5) returned null

問題

用戶端應用程式在呼叫一個 WCF 服務時出現 HTTP 500 內部伺服器錯誤,至伺服器端打開 Windows 事件檢視器,發現有個警告:

Exception information:
    Exception type: InvalidOperationException
    Exception message: DataReader.GetFieldType(5) returned null.
   at System.Data.ProviderBase.SchemaMapping.SetupSchemaWithoutKeyInfo(MissingMappingAction mappingAction, MissingSchemaAction schemaAction, Boolean gettingData, DataColumn parentChapterColumn, Object chapterValue)
......

原因

使用 SQL Profiler 攔截程式對資料庫送出的 SQL 命令,發現該 SQL 所查詢的資料表的第五個欄位的型別是 geometry。進一步追查,原來 .NET 應用程式若有用到 SQL Server 資料庫的 geometry 型別,該應用程式所在的電腦上就必須額外安裝 SQL Server 2008 R2 Feature Pack。

解法

至微軟網站下載 SQL Server 2008 R2 Feature Pack。該下載頁面的 Download 按鈕只會下載一個安裝說明文件,實際要下載的元件就列在該頁面的下方。可供下載的元件很多,但我們只需要這個就能解決問題:Microsoft System CLR Types for SQL Server 2008 R2。

技術提供:Blogger.
回頂端⬆️