這次的 bug 逃走中上演於 SQL Azure...
Bug 逃走中,我們將扮演獵人,追捕躲在程式角落或是各種不同問題內的 bug (不論是程式中的 bug 或是無法讓程式正常運作的,都是 bug)~
這次的 bug 逃走中上演於 SQL Azure。
今天在廠商那準備講授 A Lap Around Windows Azure Platform 課程前,RD 請教了我一個問題,說在 SQL Azure 上不支援中文 (輸入中文字會變成 "?"),請他實際展示一下,確實是如此。
咦?但我 demo 了不下數十回,SQL Azure 可以支援中文啊?
當下我第一個想到的是定序,因為 SQL Server 可以選定序,但 SQL Azure 的定序固定是英文,而會和定序有相關聯的就是資料型別了,varchar 和 nvarchar 是不同的,設成 nvarchar 可以確保 Unicode 字元可正常存入。但他說 SQL Azure 上的表格已設為 nvarchar 卻仍無效,我也看了一下表格設定,真的是 nvarchar。
後來我要他 step-by-step 的執行他的程式,當執行到 DAL 時,我看他使用的是 stored procedure,然後他突然想到 … stored procedure 可能使用的是 varchar,隨即去看了那一支 stored procedure,發現真的是 varchar,修正成 nvarchar 後即正常。
所以各位看倌們,資料表真的一開始就要設計好,包含資料結構與關聯,否則以後如果資料表改了什麼東西,是牽一髮動全身啊 …。
Bug 捕獲,Case Closed!