本文將透過【SQL Server 2012 What' s new in Manageability】Virtual Lab 來介紹 SQL Server 2012 管理上的新功能。
SQL Server 2012 提供許多新功能來幫助 DBA 可以更有效率的管理組織內的 SQL Server,本文將透過【SQL Server 2012 – What’s new in Manageability (SQL 147)】Virtual Lab 來跟大家分享有哪些好用的資料庫管理功能。
【Exercise 1】
當您需要管理多台 SQL Server 伺服器,可以透過 SQL Server Management Studio(以下簡稱 SSMS)來幫助您簡化您的作業;另外在還原資料庫時,新的 TimeLine 視窗可讓 DBA 可以很清楚看到資料庫備份的資訊,也可讓 DBA 透過 GUI 的方式來還原到特定時間點;以及新版的 SSMS 2012 有哪些可以讓您在撰寫資料庫程式時更好用更有效率。
【Task 1】
註冊 SQL Server 伺服器。
-
首先您可以從【Start > All Programs > Microsoft SQL Server 2012 > SQL Server Management Studio】來開啟 SSMS。
-
接著在【Connect to Server】視窗中選擇或輸入 Server name 為【SQLONE】,然後按【Connect】。
-
若您想在管理 SQLTHREE,您可以在 SSMS 的【Object Explorer > Connect > Database Engine】進行連接至 SQLTHREE 執行個體。
-
在【Connect to Server】視窗中選擇或輸入 Server name 為【SQLTHREE】,然後按【Connect】。
-
完成後您就可以在 Object Explorer 中看到如下圖的兩台 SQL Server 伺服器的執行個體,後續您可以針對這兩台伺服器進行各項的開發與維護工作。
【Task 2】
利用備份檔案來還原資料庫。
-
接續 Task 1 所註冊好的 SQL Server 伺服器,由【SQLONE > Databases > Restore Database】開啟資料庫還原精靈。
-
由於本次練習是要從資料庫備份檔案來還原資料庫,因此請於【Restore Database】視窗中點選【Device > … > Add】來選擇要還原的資料庫備份檔。
-
備份檔案路徑為【C:\LabFiles\Setup\Databases\Backup\Adventureworks2012.bak】,選擇完畢後按 OK 。
-
於【Select backup devices】視窗中您將看到上個步驟所選擇的檔案,接著按 OK 。
-
您可以在【Restore Database】視窗中點選【Timeline】來查看備份檔的相關資訊,像是完整備份、差異備份、交易記錄備份及截尾記錄備份等,都會清楚的標示出來。若您要還原到特定時間點,再也不用像過去一樣,自行撰寫 T-SQL,只要透過 Backup Timeline 視窗中所提供的 GUI 就可以輕鬆完成。
-
點選【Restore Database】視窗中的【Files > Relocate database files to folder】來重新指定資料庫檔案和交易記錄檔的位置。當來源 SQL Server 伺服器與要還原的伺服器預設資料庫檔案放置路徑不同時,這個功能尤其方便。
-
假設您要還原的資料庫已經存在(資料庫檔案和交易記錄檔),您可以選擇【Options > Overwrite the existing database(WITH REPLACE)】來將之覆蓋。
-
假設一切順利,您將看到如下圖的畫面,表示資料庫還原成功。
【Task 3】
SSMS 的新功能。
-
首先您必須連接至 SQLONE,接著點選【Object Explorer > SQLONE > New Query】來開啟查詢編輯器。
-
接著於查詢編輯器中輸入下列的 T-SQL 敘述。
1: select *
2: from sys.tab
當您輸入到 tab 時,SSMS 會自動列出所有包含 tab 的名稱的資料庫物件(如下圖),這個功能稱之為【Intellisense】。
-
若您覺得查詢編輯器的字型大小太小或太大,您可以像在 Visual Studio 2010 中一樣,透過 Zoom 視窗來調整顯示的百分比,而不需要大費周章的從【Tools > Options】中去設定。
-
假設您嘗試透過 T-SQL 來建立資料庫物件,您對建立物件的指令不熟,除了查詢線上說明外,現在您可以利用內建的 Code Snippet 來幫您完成 T-SQL 程式碼的框架,您只要在查詢編輯器中按滑鼠右鍵,選擇【Insert Snippet】。
SSMS 就會提供您內建的程式碼片段來幫助您輸入您所要的 T-SQL 敘述,本 Lab 主要以 Create Table 為範例(如下圖)。
建立好框架之後您只要利用 TAB 鍵就可以在下圖反白處巡覽,依照您的實際需求來輸入資料表的相關資訊,即可輕鬆地利用 T-SQL 來建立資料表。
【Exercise 2】
SQL Server 提供一套簡單的方式來幫助 DBA 或資料庫開發人員部署和管理資料層的物件 – Data Tier Application,透過 Data Tier Application 您可以很方便地把資料庫打包並部署到其他 SQL Server 伺服器,甚至是 SQL Azure上的執行個體,都相當容易。r
【Task 1】
擷取 Data Tier Application。
-
以 Lab 中的範例來說,您可以點選【Object Explorer > AdventureWorksDW2012 > Tasks > Extract Data-tier Application】來開啟 Data Tier Application Wizard。
-
於歡迎畫面中按 Next。
-
輸入要將 DAC Package 儲存路徑及檔案名稱,請依照 Lab 文件中所述,輸入【C:\Labfiles\AdventuresDW.dapac】,然後按 Next 。
-
於 Summary 視窗中按 Next。
-
接個 Data Tier Application Wizard 就會開始打包資料庫物件,若順利完成您將看到如下圖的畫面,接著按 Finish。
-
假設要將上述步驟的封裝檔部署至 SQLTHREE,請點選【SQLTHREE > Databases > Deploy Data-tier Application】。
-
於歡迎畫面中按 Next。
-
於【Select Package】步驟中,選擇前面所產生的封裝檔。
-
於【Update Configuration】步驟中您可以設定資料庫名稱,接著按 Next。
-
於【Summary】步驟中按 Next。
-
部署成功後,您將看到如下圖的畫面。
【Exercise 3】
接下來的練習,將介紹如何透過 Powershell 來管理 SQL Server,甚至利用一些 Scripts 可以進行自動化資料庫備份作業。
-
請於【SQLONE > Start PowerShell】來開啟 PowerShell 視窗。
-
利用【Invoke-Sqlcmd】模組來引用 Sqlcmd 來查詢資料庫版本,程式碼如下:
Invoke-Sqlcmd -Query "SELECT @@VERSION" -QueryTimeout 3
-
您也可以先利用【cd database】來切換至 database 目錄,接著執行下列 Script 來列舉執行個體上的資料庫,您可以於下圖 3 處看到執行結果。
foreach ($database in (Get-ChildItem)) {Write-Host $database.Name}
-
您也可以事先將要執行的 PowerShell Scripts 寫好儲存在 *.psl 檔案中,接著於 PowerSell 命令提示字元中直接加以執行,如下圖就是執行一個位於【C:\LabFiles\Setup\Manageability\Scripts\Ps-BackupDatabases.psl】的 Script 檔案來備份執行個體中的資料庫。
-
執行完畢之後可於【C:\LabFiles\BAK File】路徑下看到上一個步驟所備份的檔案。
【Exercise 4】
SQL Server 2012 提供一個新的高可用性技術 – AlwaysOn,這個練習將介紹如何監控 AlwaysOn Availability Groups。
-
請於【Connect to Server】輸入 Server name 為【SQLPRODUCTION】後按 Connect。
-
您可以於【Object Explorer > SQLPRODUCTION > Databases】看到 ContosoCRM 和 ContosoSalesDB 狀態為 Synchronized,表示這兩個資料庫已經加入 AlwaysOn Availability Group,正處於資料同步的狀態。
-
您可以展開【Object Explorer > AlwaysOn High Availability > Availability Group】查看參與 AlwaysOn Group 的成員及其相關資訊。
-
若您想查看 Availability Group 的狀態,可點選【ProductionAG(Primary)> Show Dashboard】已開啟儀表板。
-
儀表板中可以查看 Availability Group 的健康狀態,如下圖所示: