Pages

2010年10月26日 星期二

無法解析 equal to 作業中 "Chinese_Taiwan_Stroke_CI_AS" 與 "Chinese_Taiwan_Stroke_BIN" 之間的定序衝突

如果在曾在不同版本的 SQL Server 上搬移過 Database,或是匯出、匯入過不同語系的 Database,都很有可能在下 SQL 語法的時候發生資料庫「定序」(Collation)錯誤的問題,那… 定序(Collation)到底是什麼咧?我相信妳看到這裡一點都不會想知道,所以我今天是說給其它一些想了解的人聽的。

「定序」到底是什麼?最簡單的來說,就是決定資料在資料庫裡排列的方式。聽起來好像也沒什麼大不了的,就只是排列的方式嘛… 對吧對吧?排列的方式可以有多重要?可以比吃飯重要嗎?只要結果資料可以秀出來,排列不對只是個小事而已,其實,我當初也是這樣想…

說到這裡,感覺好像還聽不出什麼重點。就讓我直說吧,當兩個 table 定序不同的時候如果有做 join 的動作,那就一定會發生「無法解析 equal to 作業中 xxx 與 ooo 之間的定序衝突」,因為 SQL Server 無法得知妳到底要遵從哪種定序,所以就直接給妳錯誤然後死在那裡,超級不負責任,跟我完全不一樣!

舉個例子,我們都知道 SQL 裡的 Order By 欄位,不過我們所謂的 Order By 欄位到底是 Order By 欄位裡的什麼呢?英文大小寫有差嗎?字體的全形半形有影響嗎?如果欄位裡面存的是中文資料,那是 Order By 筆劃嗎?還是發音?講了這麼多,「定序」(Collation)就是在做這件事。

如果在妳的 MS SQL Server Management Studio 上的 Database 上按滑鼠右鍵,妳可以在資料庫屬性裡的「一般」或是「擴充屬性」裡看到這個資料庫目前設定的「定序」是什麼。

妳目前所看到的是「Chinese_Taiwan_Stroke_BIN」,前面「Chinese_Taiwan」指的是語系,而後面 BIN 則是指「Binary」的意思,換句換說,就是表示目前是使用 Binary 來做排序,而也因為每個字的 binary 值不同,所以也可說是是這些資料欄位是有區分大小寫的。

再舉個例子「Chinese_Taiwan_Stroke_CI_AS」,「CI」是指 Case Insensitive(不區分大小寫),「AS」是指 Accent sensitivity(區分腔調),其他比較常見的還有「CS」Case sensitivity(區分大小寫)、「AI」Accent Insensitive(不區分腔調),「WS」Width sensitivity(區分全形半形)等等,其中還有比較特殊的「BOPOMOFO」可以讓妳不依照筆劃反而是依照中文 ㄅㄆㄇㄈ 發音來排序。

說了這麼多,相信妳應該有了個底,接下來就是整篇的重點了,萬一妳在 join 兩個定序不同的 table 而發生了譬如說「無法解析 equal to 作業中 "Chinese_Taiwan_Stroke_CI_AS" 與 "Chinese_Taiwan_Stroke_BIN" 之間的定序衝突」的問題,那該怎麼辦?這個可以區分為兩個主要解決辦法。

如果妳是開發人員角色,且在沒有辦法去修改後端資料庫時,最簡單的辦法就是在妳所 Join 的 table 後面直接加上 Collate 新定序名稱,這樣就解決了。例子如下
select EmpId, EmpName, CityName from Emp
join City on Emp_CityId=CityId collate Chinese_Taiwan_Stroke_CI_AS
where EmpId='9F40460'
簡單吧!我就說,我也不懂為什麼外面的書籍或是教學文件為什麼要弄得那麼複雜。好吧,接下來就有一些些複雜了,如果妳是資料庫管理人員,而妳在無法更動程式的狀況下,想要直接一勞永逸修正資料庫來解決問題,就要照以下的步驟來做。

如果妳想要更改整個資料庫的定序,妳必須下以下的指令,因為在 MS SQL Management Studio 裡是不允許妳直接修改定序(避免妳操作不當選擇了錯誤的語系而把整個資料庫毀了)。
ALTER DATABASE 妳的資料庫名稱 SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE 妳的資料庫名稱 Collate Chinese_Taiwan_Stroke_CI_AS
ALTER DATABASE 妳的資料庫名稱 SET MULTI_USER WITH ROLLBACK IMMEDIATE
第一行是鎖定目前資料庫給妳一個人使用,避免其他人更新,最後一行是恢復成多人使用,而第二行則是設定妳所想要的定序名稱。這個指令,不僅會直接更改資料庫的定序,連同這個資料庫下面的所有 tables 也都會被更改成這個新的定序,不過… 這邊就要聽好,重點來了,這個也僅只會更改「資料庫」與「Table」的定序,而 Table 下的欄位也有自己的定序,通常預設是跟 Table 一樣,不過有時候也有例外的情形…

如果以上的指令下過了,妳還是發生同樣的定序錯誤,那妳就得看一下 SQL 語法到底是哪個欄位與欄位之間做 join 時定序發生錯誤,而直接去修改那個欄位的定序。

修改欄位的定序可以在 MS SQL Management Studio 上直接設定。

可以指定或或是使用目前 Table 的預設值(還原預設值)。

不過… 天底下有時候就是這麼剛好有這麼衰的事,當妳無從得知程式背後是如何運作的同時,又剛好發生定序錯誤… 唯一的辦法,就是一個 table、一個 table、一個欄位、一個欄位的掃一遍了… 而這種好死不死的衰事,最近這幾天就剛好發生在我身上… 唉…(要不然也不會有這麼枯燥的這篇出現了)

2010年10月14日 星期四

目前最好用的免費燒錄軟體 True Burner

又來介紹好東西了!

妳知道,對於我這個燒錄大戶,燒錄軟體絕對是我每天必開的程式,舉凡燒音樂CD、燒電影、燒程式工具、燒AV、燒錢…,唉~ 我說我的燒錄機還真的是忙得很!也因為如此,對於市面上各大燒錄軟體我都會手癢忍不住給他來個安裝試用一下,也沒別其他的用意,只是為了想看看有什麼是最直覺好用的,就像是賽車手看到不同款的車子都想開一下意思是一樣的。

市面上的免費燒錄軟體不佔少數,大概就是 CDBurnerXP、ImgBurn、Ashampoo® Burning Studio 6 Free、Burn4Free 等之類的,不過仔細看起來,多少有點跛腳,有時候就算是雞肋,卻就這麼剛好就是妳想要的功能。譬如說 CDBurnerXP 的操作不直覺,ImgBurn 的功能太少之類的,一直離普通的使用者有一些些距離。

今天發現了個好東西,這個燒錄軟體實在是太簡單了!簡單直覺到就連踢牙老嫗都會用!最重要的是它也是免費的!免費,多麼美好的字眼,有台免費的車子就擺在那邊給妳開,妳怎麼可以不隨便給它用一下呢?相信我,用過後妳就會對它愛不釋手,恨不得有更多的東西可以讓妳燒一下!

True Burner 官方網站:http://www.glorylogic.com/trueburner.html

Create Data CD 就是建造資料 CD,Create MP3 CD 就是建造 MP3 CD,Create Audio CD 就是建造音樂 CD… 我的天,簡單到我都不知道該怎麼解說了,因為沒有多餘其他囉唆難懂的選項,就是很直覺的幾個按鈕,想要做什麼,直接按下去就對了。

剛剛是 CD 的選項,而這個是製作 DVD 的相關選項,而剛剛那白痴的操作解說我不想再來一次,所以妳可以就看字面上的解釋,想要做什麼,就做什麼。就連製作 ISO 映像檔、燒錄 ISO 映像檔也有,如果妳不懂什麼是 ISO 映像檔那代表妳不需要這個功能,可以略過。

喔!連燒錄藍光片的功能也有,就好比這部車不僅可以在路上跑,還可以直接開到海上!雖然好像是一個用不怎麼太到的功能,不過如果妳是好野人,不僅燒錄機是藍光燒錄機,且用的片子都是藍光片,好吧!請妳直接把車開到海上!妳我應該屬於不同的層次。

舉凡光碟對燒、製作音樂 CD、製作電影 DVD、資料備份、製作開機光碟這些重要的功能一樣也沒少,比起我之前所介紹的免費燒錄軟體功能更加完善,加上支援燒錄中文、日文(極為重要)不會變亂碼,總而言之,這真真真的是個好東西,如果妳是個很直覺的人,不喜歡把一件事情弄得太複雜,那妳在燒錄這檔事上妳還真該試一試 True Burner,這絕對是不容錯過的好物啊~

什麼?妳問我現在是不是燒錄也改換用這個?喔… 對不起,我這個人比較不一樣,可能是天生有反骨的關係,我還是在繼續使用 PepSky All-in-One。我是個很喜歡把一件簡單的事情弄得很複雜的人,否則現在就會換成妳在這裡寫東西換我在下面看了,對吧?
相關連結:True Burner 官方網站
相關連結:Ashampoo® Burning Studio 6 Free 官方網站
相關連結:功能最完整的 Ashampoo Burning Studio Free 免費燒錄軟體
相關連結:免費燒錄軟體 CDBurnerXP
相關連結:超強的 PepSky Free Cd Maker 免費燒錄軟體
相關連結:什麼是踢牙老嫗?

2010年10月1日 星期五

比 Xmarks 更好用的 Google Bookmarks

不知道妳是怎麼儲存管理妳的網頁書籤的,是存在電腦裡呢?還是存在網路上?

存在網路上有許多優勢,不僅方便性大為提昇,可以在家裡與公司共用同一份書籤之外,也避免了電腦掛了之後書籤也付之一炬。

Xmarks 是網路上提供管理書籤的一家公司,服務免費。不過今天看到 電腦玩物 上有一篇文章說道,Xmarks 因為資金無以為繼而將在 2011 年 1 月 10 日終止服務的消息,而隨之所考慮的,是詢問使用者是否願意每年支付 10~20 美元,成為 Xmarks 的付費會員。

其實我想說,還是算了吧… 與其掏出錢來支付每年 10~20 美元的費用,還不如使用其他更好的服務。這種服務一直不嫌多,譬如說,Google Bookmarks 就是…。

妳可以隨時隨地,只要有網路,就可以在瀏覽器中開啟 Google Bookmarks,不管是新增還是編輯,都很簡單與方便。如果妳有 Google 的帳號,譬如說 Gmail,那更是不用申請,直接就可以使用了!

或許妳會問說,那每次要找書籤都還要先進入 Google Bookmarks 那豈不是很麻煩?所以在廣大的使用群的支持下,也有許多人開發了許多套件,譬如說 Firefox 瀏覽器下的 Gmarks,或是 Google Chrome 瀏覽器下的 Google Bookmarks 套件,都可以讓妳在不進入網頁就可直接存取書籤。(什麼?妳問 IE 有沒有?對不起,沒有!IE 那鬼東西還是扔了吧)

下面就是 Google Bookmarks 套件在 Google Chrome 下運作的情形。

其實我喜歡 Google Bookmarks 最主要的原因就是他們的標籤功能,使用 Gmail 的人應該都知道,善用標籤功能效率真的比普通單一樹狀資料夾好上很多。

舉個例來說吧,譬如說在台北有一家複合式餐廳,它提供了下午時段下午茶,也提供了精緻午餐及晚餐的點菜服務,如果是普通的書籤,那妳應該只能很單純的把它歸類到「餐廳」類,不過有了標籤,妳可以把它貼上「餐廳」、「下午茶」、「台北市」等標籤,所以妳在查詢「餐廳」、「下午茶」、「台北市」的同時,妳都可以看到它。

一個連結,許多標籤

或許妳會問說如果到最後書籤真的太多,而妳又忘了它歸類到哪個標籤,難道說還得要一個標籤一個標籤去找嗎?如果不必的話,那到底該要如何找到需要的書籤呢?

這個超便利的功能,當然一定要有!舉例今天我只要搜尋我所有有關於「電腦」的書籤,只要在搜尋頁籤上輸入「電腦」不到一秒就列出來所有有關的書籤了。

Firefox 上面的 Gmarks 也有大同小異的界面,都是利用 Google Bookmarks 來做背後的資料來源。所以不管是 Firefox 還是 Google Chrome 的使用者,都有很棒的界面可以安裝使用。就算妳哪天去到了朋友家,就算對方只有愚蠢的 IE 瀏覽器,妳只要可以上網就還是可以很容易的直接進到 Google Bookmarks 查詢自己的書籤。

所以,拜拜 Xmarks… 對我來說,以一套書籤管理網站免費好用的還是很多很多。
相關連結:Google Bookmarks
相關連結:Xmarks
相關連結:Google Bookmarks 套件 For Google Chrome