2013年7月24日

SQL 2012 新功能 - Always On

SQL Server 2012 多了一項重要的功能 Always On,
功能類似舊版的資料庫複寫的功能,差異在於舊版只能複寫 1 台 SQL Server,
且複寫資料庫只能在回復模式,不能進行讀取和備份,
在 SQL Server 2012 的 Always On 就提供了群組的功能,可以同時或非同時的複寫資料庫到多台 SQL Server 。
和 SQL Server Cluster 的功能差異在於 Always On 是針對資料庫,Cluster 是針對 Instance 做容錯轉移,各有各的優缺點。

架構:

LAB:SQL Server 2 台,分別是 SQL3、SQL4。

在主機上分別安裝容錯轉移叢集的功能。

開始容錯轉移叢集,建立新的叢集,並將 SQL3、SQL4 加入到叢集裡面。

再來就是安裝獨立的 SQL Server 功能,先選擇全部安裝。
安裝就是一直下一部就完成了,就不多做說明。

開啟 SQL Server 組態管理員,將 Always On 功能開啟,會自動抓取容錯轉移群組的名稱。
記得 2 台都要設定喔。


在建立 Always On 群組之前記得先建行完整備份,然後建立 Always On 的群組,並建立群組的監聽程式。
群組監聽程式主要在於用戶端只要記得這個電腦的名稱,就會連接到主要的 SQL Server,就不用再更新 SQL Server 的 IP 或 電腦名稱。
建立好就會下圖所示:

再來就是修改次要伺服器能不能進行讀取的動作,改為僅限讀取意圖,有一些報表的作業就可以指到次要的伺服器,分散 SQL Server 的效能。

 在容錯轉移叢集就可以看到群組監聽程式所產生的電腦名稱和 Always On 的群組應用程式名稱。

再來就是測試看看會不會自動移轉了,把主要的 SQL Server 關機試試,看能不能用 sql-g1 是否能夠正常連線,這樣就完成啦。

2013年7月20日

測試 SQL Server 2012 Cluster 的 Failover 轉移

之前的 SQL Server 就有 Cluster 叢集的功能了,
在 SQL Server 2012 也是一樣的架構沒有多大的改變,不過可以不需 DTC 的服務,
但是本次還是一樣安裝 DTC 的功能做測試,
此次要測試的就是二台 SQL Server 主機,DB 的檔案放在 iSCSI 的設備,進行 Failover 的轉移,
在 OS 的部份要注意必須安裝 Enterprise 的版本以上才有此功能。
在 SQL Server 2012 提供 Alaways On 的新功能,架構為 SQL Server Cluster 有各自的 DB Data File,
主要的 SQL Server 即時或非即時的鏡象到其他多台次要 SQL Server (舊版的 DB Mirroring 只能一台),
次要的 SQL Server 可以進行報表或備份而不影響使用效能,且分散查詢的使用負載。
叢集安裝方式一樣,只差在 SQL Server 是獨立安裝,下一篇會再說明 LAB 記錄 。

LAB架構:

Host OS:Hyper-V 主機,新增功能檔案存取服務 iSCSI。
Guset OS:二台 SQL Server 的主機,分別是 SQL1、SQL2。

Host OS 新增檔案存取服務的功能。

再來就是開啟 iSCSI 的虛擬磁碟機,
我建立三個磁碟機分別是 Quorum 仲裁磁碟、DTC 分散式交易協調、Data 存放資料磁碟

Guest OS,安裝 Windows Server 2008 R2。
安裝功能容錯轉移叢集。

2013年7月19日

SQL 語法 WITH - 將 SQL 的查詢當一個臨時的 VIEW 來使用

Oracle 有提供非常有用的 SQL 語法,
要介紹的就是 WITH 的函數,主要的功用就是將 SQL 查詢包進來,類似 VIEW 的功能,
這樣要進行 Update 或是比較複雜的查詢就可以用到。

語法: WITH 臨時的名稱 AS (SQL 查詢語法)

直接看範例,查詢所有製程工單未完工的製程序,所以就要把大於或等於有 WIP 量的製程序都列出來。
with ecm_wip as(
select ecm01 ecm01x,min(ecm03) ecm03x from ecm_file
where (ecm301+ecm302+ecm303-ecm311-ecm312-ecm313-ecm314-ecm316 <> 0 or ecm301+ecm302+ecm303 = 0)
group by ecm01)
select ecm01,ecm03,ecm301,ecm302,ecm303,ecm311,ecm312,ecm313,ecm314,ecm316,ecm315 from ecm_file,ecm_wip
where ecm01 = ecm01x
and ecm03 >= ecm03x
order by ecm01,ecm03

將有 WIP 量不為 0 或是還沒有發料的工單找出來取最小的製程序製作成一個臨時的 View,
然後再 JOIN 進來取等於或大於以後的製程序,這樣是不是就可以簡化許多了。

有了這個 WITH 的語法,我們寫 SQL 就可以將要查詢的資料先各別寫出來,然後再用 WITH 一一的拼裝起來,
最後再全部 JOIN 在一起就可以了,
我們也不需要為了專屬的 SQL 查詢,寫了許多共用的 VIEW 出來,也變的不容易閱讀。

當資料量越來越大時,不佳的查詢 SQL 語句就會影響系統的效能,好用的函數也是可以多加利用,
有複雜的 SQL 語句時記得要查看是否有 Full Scan Table 的情況。

2013年7月18日

Exchange 2013 Client Access role NLB (Network Load Balance) 網路負載平衡

Exchange 2013 Client Access role 和 Exchange 2010 有一些改變,
官方將不再提供 Client Access Array 的功能,將由 Exchange 自動抓取 Active Directory 的 CAS role 最佳的主機來連線。
要做到 NLB 的功能的話 SSL 就會出現問題了,AD 指派的主機就不是 Client Access Array 的 URL 而是 CAS 的主機 URL。
要解決這麼問題最便宜的方法就是重新向 CA 企業根憑証中心註冊一個 *.domain.com 的網頁伺服器憑証,就不需用硬體設備來做叢集。

LAB:
Active Directory 環境。
安裝 Exchange Client Access role 2 台主機,分別為 Exchange-CAS1、Excahnge-CAS2。

安裝就不多加說明了,參考微軟官方網站說明下指令就可以了,
http://technet.microsoft.com/zh-TW/library/bb691354(v=exchg.150).aspx

下載 Exchange 2013 CU1 完整安裝:http://www.microsoft.com/zh-TW/download/details.aspx?id=38176
解壓縮後就可以安裝了,安裝就不多說明了,只要選擇 Client Access role。

Exchange 2013 現實 DAG Mailbox 高可靠性的功能

Exchange 2013 在服務的角色將 Transport role 拿掉合併到 Mailbox role 了。
要測試的就是 Exchange 2013 Mailbox role 的 DAG (Database Availablility Group) 的功能。
功能和 Exchange 2010 相同,架構和模式也都一樣沒有改變。
要把現有的 Exchange 2010 升級到 Exchange 2013 需將 Exchange 2010 升級到 Service Pack 3,
然後 Exchange 2013 需要安裝 CU1 以上的版本,才能 Exchange 2013 和 Exchange 2010 混合使用。
有 Edge role 的情況時,也必須要升級到 Exchange 2010 的 SP3 。

LAB 環境:
Active Directory 環境下。
Exchange 2013 Mailbox role 2 台,分別是 Exchange-MBX1、Exchange-MBX2。
Exchange 2013 Client Access role 1 台,Exahnge-CAS1。

安裝就不多加說明了,參考微軟官方網站說明下指令就可以了,
http://technet.microsoft.com/zh-TW/library/bb691354(v=exchg.150).aspx

下載 Exchange 2013 CU1 完整安裝:http://www.microsoft.com/zh-TW/download/details.aspx?id=38176
解壓縮後就可以安裝了,安裝就不多說明了,只要選擇 Mailbox role。

必須要有 Client Access role 的主機,因為 Exchange 2013 管理介面改為網頁的樣式,
所以必須要有 CAS 主機才能夠開啟管理介面去設定。