2015年12月23日 星期三

【ASP.NET SQL】有關於 開發時使用到:Geography Geometry 資料 null 問題

Asp.net 開發時使用到 圖台 出現臨時問題


可能會用到 兩種型態欄位 Geography / Geometry

當build 好的web 程式放在 Windows 2012 R2 上,環境 Framework 4.5 及 iis 8.5 內

顯示頁面記錄:讀取程式中 Geography / Geometry 資料時, 會是 null

原因:Framework CLR 不支援 SQL 格式欄位,就直接顯示 NULL

解決方案一:

專案 bin 中沒有引用到 Microsoft.SqlServer.Types.dll 元件
所以會出問題...你可以加入參考元件,它讓在bin 出現,
然後web.config 中 記得要加入以下

< add assembly="Microsoft.SqlServer.Types, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91" >

它的存在是,本機有安裝 SQL 2008 R2 它就會裝在:
C:\Program Files (x86)\Microsoft SQL Server\100\SDK\Assemblies\Microsoft.SqlServer.Types.dll
就能找到它


解決方案二:

你可以裝 軟體全名是:Microsoft® System CLR Types for SQL Server® 2008 R2
下載連結:https://www.microsoft.com/zh-tw/download/details.aspx?id=16978

檔案:SQLSysClrTypes.msi   (看系統核心是i64 或x86)

下載連 頁面中有一小段的說明:
SQL Server 系統 CLR 類型封裝包含一些元件,可實作 SQL Server 2008 R2 中的幾何、地理和階層識別碼類型。這個元件可以與伺服器分開安裝,以便讓用戶端應用程式在伺服器外部使用這些類型。

注意:本元件也需要 Windows Installer 4.5。 應該windows 2012 R2 應該是符合

安裝完後必需web 應用程式集區點選回收,或IIS重新啟動,就可以在開發專案程式不用引用Microsoft.SqlServer.Types.dll元件,

PS.好奇之心 SQL CLR 到底安裝了什麼,結果居然是一模一樣的檔案跟路徑,或許有其它東西我沒發現,總言之,就是這樣子處理掉問題


下載不同 2008 CLR  版本 ,看你資料庫是用哪種
Microsoft® SQL Server® 2008 R2 功能套件
https://www.microsoft.com/zh-tw/download/details.aspx?id=16978

Microsoft® SQL Server® 2008 R2 SP1 功能套件
https://www.microsoft.com/zh-tw/download/details.aspx?id=26728

Microsoft® SQL Server® 2008 R2 SP2 功能套件
https://www.microsoft.com/zh-tw/download/details.aspx?id=30440