2012年3月10日 星期六

利用IPSec建立內部防火牆以提升資料庫安全2

        上一篇介紹IPSECCMD的使用範例,本篇介紹可以用在Windows Server 2008上的Netsh IPsec命令吧,詳細使用方法請參見Netsh Commands for Internet Protocol Security (IPsec)
 
        Netsh IPsec比起IPSECCMD更好的優點有以下兩點(缺點是指令比較多行):
  1. IPSECCMD對篩選器清單的篩選器只會整個取代,而Netsh IPsec對篩選器清單的篩選器是可以一筆一筆附加的
  2. IPSECCMD對原則的每次變更都要先停用再啟用,變更的部分才會生效,而Netsh IPsec只要是對已經指派的原則所作的變更都是立刻生效 
       對了,忘了提使用IPsec不僅可當內部防火牆,還可順便對網路連線作加密!像你如果用Wireshark這類的封包分析軟體來擷取網路封包,未加密前是可以從封包中查出使用的T-SQL指令,但如果用IPsec加密後是看不出來的喔!

2012年3月6日 星期二

如何取出某段期間內的每個周日?

         MSDN上有網友在問,已經有高手利用CTE去解囉,小弟剛好在練習水平思考的技巧,在此提供另一種解法,就是利用SPT_VALUES提取列表去解

        小弟認為使用SPT_VALUES比CTE更直覺的去解這個問題,效能也許第一次不比CTE快,但第二次將SPT_VALUES載入記憶體後,就不輸CTE囉,而且重點是此方法從SQL 2000到SQL 2012 (RC0)都適用

2012年3月2日 星期五

[查詢優化]影響執行計畫的因素4-Selectivity(選擇性)


        選擇性是一種獨特性的衡量,大多用來描述述詞,如果要計算的話就是符合資料列/總資料列的比率

        假設有個員工資料表,總共100位員工,男女各半,資料表上有ID(身分證或護照)及性別欄位,如果述詞為" ID= '某個員工ID' ",可以預期只會回傳一個員工,選擇性為1/100=0.01,表示有較高的獨特性,所以ID欄位有高選擇性,如果述詞為" 性別 = '男生' ",可以預期將會回傳50位員工,選擇性為50/100=0.5,有較低的獨特性,所以性別欄位的是低選擇性

        大資料裡找小資料,使用索引是很有效率的,所以通常述詞裡有高選擇性欄位,就很適合拿來做選索引欄位囉,像前述所提的ID欄位,很適合拿來做索引欄位,性別欄位就較不適合囉