針對上述的問題,SQL Server 2012推出了 [Distributed Replay] 的功能,讓您可以將錄製好的追踨檔分散到多台的Client端的機器上執行,藉以透過多台電腦的執行,找出系統升級後可能發生的問題。
Distributed Replay 主要元件:
- Distributed Replay 管理工具:用來與分散式重新執行控制器進行通訊的主控台應用程式 DReplay.exe。您可以使用管理工具來控制分散式重新執行。
- Distributed Replay Controller:執行 Windows 服務 (SQL Server Distributed Replay Controller) 的電腦。Distributed Replay Controller 可協調 Distributed Replay Client 的動作。每個 Distributed Replay 環境都只能有一個 Controller 執行個體。
- Distributed Replay Client:一部或多部執行 Windows 服務 (SQL Server Distributed Replay Client) 的電腦 (實體或虛擬)。多個 Distributed Replay Client 可共同運作,以模擬 SQL Server 執行個體的工作負載。每個 Distributed Replay 環境都可以有一個或多個用戶端。
- 目標伺服器:Distributed Replay Client 可用來重新執行追蹤資料的 SQL Server 執行個體。我們建議您將目標伺服器放置於測試環境中。
Distributed Replay 管理工具、Controller 及 Client 可以安裝在不同的電腦上,也可以安裝在同一部電腦上。在同一部電腦上,只能執行一個 Distributed Replay Controller 或 Client 服務的執行個體。
環境描述:
1、Distributed Replay 管理工具 + Distributed Replay Controller + Distributed Replay Client + 目標伺服器
由於我要模擬出二台客戶端的情況,所以第一台我會讓他同時擔任主控端與客戶端的角色,相對的此台機器上也會安裝SQL Server 2012的資料庫。
電腦名稱:SQL2012-RTM
IP:192.168.1.12
OS:Windows 2008 R2
DB:SQL Server 2012
2、Distributed Replay Client
此部份我以Windows 7的機器進行。
電腦名稱:win7-86
IP:192.168.1.80
OS:Windows 7
PS:Distributed Replay只有 SQL Server 2012 Web版本以上才有支援,而只有Enterprise可以支援到16個DReplayClient,其他的版本都只能支援一個Client。
1、安裝Distributed Replay
1-1 第一台 - 主控端 (Distributed Replay 管理工具 + Distributed Replay Controller + Distributed Replay Client )
在第一台的電腦上,除了資料庫之外,請一定要安裝下列的二個選項。
1-2 第二台 - Client(Distributed Replay Client )
關於第二台的部份,只需要安裝 Distributed Replay Client 即可,但由於此功能並沒有獨立安裝檔,所以仍需要放入SQL Server的光碟片進行安裝,在特徵選取的部份,只需勾選 [Distributed Replay Client] 即可。
2、環境設定
2-1 第一台 - 主控端
2-1-1 請更換 SQL Server 的啟動帳號為 Domain User。
以 [caryhsu\a-cahs] 為例
2-1-2 請新增一個目錄提供給dreplay執行時進行輸出。
以 [C:\labData\dreplay\OutFolder] 為例。
2-1-3 新增 [caryhsu\a-chas] 可以擁有讀寫下列目錄的權限。
- C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\DReplayController
- C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\DReplayClient
- C:\labData\dreplay\OutFolder
依照預設值,不需特別的改變,如果你有興趣了解的話,再請參考下列的位置。
設定檔位址:C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\DReplay.Exe.Replay.config
參考說明:http://msdn.microsoft.com/zh-tw/library/ff878359
2-1-5 更改DReplayController的設定檔。
依照預設值,不需特別的改變。
設定檔位址:C:\Program Files (x86)\Microsoft SQL Server\110\Tools\DReplayController\DReplayController.config
參考說明:http://msdn.microsoft.com/zh-tw/library/ff878359
2-1-6 更改DReplayClient的設定檔。
請開啟下列的設定檔,更改Controller的名稱。
設定檔位址:C:\Program Files (x86)\Microsoft SQL Server\110\Tools\DReplayClient\DReplayClient.config
參考說明:http://msdn.microsoft.com/zh-tw/library/ff878359
設定檔內容:
<?xml version="1.0" encoding="utf-8"?>
<Options>
<Controller>SQL2012-RTM</Controller>
<WorkingDirectory>C:\Program Files (x86)\Microsoft SQL Server\110\Tools\DReplayClient\WorkingDir\</WorkingDirectory>
<ResultDirectory>C:\Program Files (x86)\Microsoft SQL Server\110\Tools\DReplayClient\ResultDir\</ResultDirectory>
<LoggingLevel>CRITICAL</LoggingLevel>
</Options>
2-1-7 開啟 [系統管理工具] -> [服務],將下列兩個服務的啟動帳號變更為 [caryhsu\a-cahs]之後,然後啟動服務。
- SQL Server Distributed Replay Controller
- SQL Server Distributed Replay Client
2-2 第二台 - 客戶端(Client)
2-2-1 請新增一個目錄提供給dreplay執行時進行輸出。
以 [C:\labData\dreplay\OutFolder] 為例。
2-2-2 新增 [caryhsu\a-chas] 可以擁有讀寫下列目錄的權限。
- C:\Program Files\Microsoft SQL Server\110\Tools\Binn\DReplayClient
- C:\labData\dreplay\OutFolder
請開啟下列的設定檔,更改Controller的名稱。
設定檔位址:C:\Program Files\Microsoft SQL Server\110\Tools\DReplayClient\DReplayClient.config
參考說明:http://msdn.microsoft.com/zh-tw/library/ff878359
設定檔內容:
<?xml version="1.0" encoding="utf-8"?>
<Options>
<Controller>SQL2012-RTM</Controller>
<WorkingDirectory>C:\Program Files (x86)\Microsoft SQL Server\110\Tools\DReplayClient\WorkingDir\</WorkingDirectory>
<ResultDirectory>C:\Program Files (x86)\Microsoft SQL Server\110\Tools\DReplayClient\ResultDir\</ResultDirectory>
<LoggingLevel>CRITICAL</LoggingLevel>
</Options>
2-1-4 開啟 [系統管理工具] -> [服務],將下列服務的啟動帳號變更為 [caryhsu\a-cahs]之後,然後啟動服務。
- SQL Server Distributed Replay Client
3、錄製追蹤檔案
首先我們必須透過SQL Server Profiler來進行追蹤,藉以記錄系統進行時所有執行的SQL語法。
3-1 啟動 SQL Server Profiler,然後連結到資料庫。
3-2 開啟一個新的追蹤,在範本的地方,請記得選擇 [TSQL_Replay]。
3-3 開始全部執行一次系統上的所有功能。
3-4 當全部執行完成後,請再點選停止後,再將追蹤檔儲存,並放置在下列的位址上。
避蹤檔儲存位址:C:\labData\dreplay\dreplay.trc
4、執行 DReplay
在執行DReplay之前大約的說明一下流程,簡單的來說主要分成兩大步驟,第一個是先進行Preprocess,然後再進行Replay的動作,以下的動作都只需在第一台的主機上執行即可,詳細流程如下。
4-1 執行Preprocess
4-1-1 開啟一個DOS Command視窗
4-1-2 切換目錄
cd C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\
4-1-3 預先啟動 DReplay 的 Preprocess模式
dreplay preprocess -i "C:\labData\dreplay\dreplay.trc" -d "C:\labData\dreplay\OutFolder"
4-2 執行Replay
4-2-1 開始進行Replay
dreplay replay -d "C:\labData\dreplay\OutFolder" -o -w "SQL2012-RTM,win7-86" -s "SQL2012-RTM"
4-2-2 觀察目前執行的狀況
dreplay status -m localhost -f 60
執行完成後,所有的資料都會輸出到 C:\labData\dreplay\OutFolder 的目錄中,當然執行的過程可以透過4-2-2的語法即時的看到,以上是針對 DReplay 功能的介紹,也希望可以對大家有所幫助。
SQL Server Distributed Replay
http://msdn.microsoft.com/zh-tw/library/ff878183.aspx
安裝 Distributed Replay (安裝程式)
http://msdn.microsoft.com/zh-tw/library/gg471548
設定 Distributed Replay
http://msdn.microsoft.com/zh-tw/library/ff878359
Features Supported by the Editions of SQL Server 2012
http://msdn.microsoft.com/en-us/library/cc645993.aspx
使用 Upgrade Advisor 來準備升級
http://msdn.microsoft.com/zh-tw/library/ms144256.aspx