[小菜一碟] 在 SQL Server 做密碼的雜湊跟比對

我們都知道不應該將密碼以明碼的方式存進資料庫,至少密碼要雜湊(Hash)過才放進資料庫,大多數的人應該都是選擇在應用程式裡面,先將密碼雜湊過,再將密碼存進資料庫內,不過 SQL Server 已經有一套機制來處理密碼雜湊這件事,我們可以放心地交給 SQL Server 自己來處理。

...繼續閱讀 »

[廚餘回收] 解決因參數嗅探(Parameter Sniffing)導致使用到錯誤執行計劃的方法之一 - 加入註解。

遇到參數嗅探(Parameter Sniffing)出問題的時候真的會讓人無力,我們為了避免 SQL Injection,所以參數化查詢變成了通則,而正是因為參數化查詢才會有參數嗅探,如果我們是使用 Adhoc 或 Prepared 的方式在下 SQL 語句的話,倒是有一個方法能夠避免因參數嗅探使用到錯誤執行計劃的問題,那就是加入註解

...繼續閱讀 »

[小菜一碟] 已知有一個固定值的集合,在 SQL Server 怎麼把它變成 Table?

這個標題聽起來像是廢話,我們有一個集合,怎麼把它變成 Table? 啊不就 INSERT INTO 就好了?我要介紹的不是只有 INSERT INTO 而已,我們在寫 SQL 的時候,偶爾會遇到一種場景,我們手上有一個集合,這個集合的值是固定的,比如說年份 2011 ~ 2020、月份 1 ~ 12、...等,這個集合我們會拿去跟現有的資料做 JOIN,進行一些統計運算,我們把這個集合變成 Table,在操作上就會比較方便一點,我就我所知的四種方法來跟大家分享。

...繼續閱讀 »

[小菜一碟] 無意中發現 SSMS(SQL Server Management Studio)有一個「檢視相依性」的功能

如果我們接手維護一個資料庫,裡面的 Table、View、Stored Procedure、Function、Trigger 相依鏈錯綜複雜,想要定位發生問題的區塊,搞得像盜墓一樣,這天我無意間發現 SSMS(SQL Server Management Studio)有一個「檢視相依性」的功能,有助我們來釐清資料庫物件的相依鏈。

...繼續閱讀 »

[小菜一碟] SQL Server 內建的一個抽號碼牌的功能 - SEQUENCE

在過往的需求中,難免會有那種需要按照順序產生或處理資料的時候,我個人常用的解法是替資料照著順序給一個可排序的標記,這就需要一個按照順序產生識別碼的機制,如果在同一個應用程式內還好處理,要是跨應用程式、跨機器的話,產生識別碼的演算法就要好好想想,現成的話 SQL Server 就有一個 SEQUENCE 功能可以用。

...繼續閱讀 »

[料理佳餚] SQL Server 的叢集索引(Clustered Index)欄位不一定都要是主鍵(Primary Key)

我個人認為 SQL Server 預設拿主鍵(Primary Key)來當叢集索引(Clustered Index)欄位這件事情,應該要被重新考慮,以目的來講,主鍵與叢集索引的關係其實並不大,主鍵的目的是確保資料是唯一且正確的,而叢集索引的目的是提升查詢效率,所以在這點上,我覺得在資料表一個開始設計的時候,預設是分開考量的會比較恰當。

...繼續閱讀 »