今天看了SQL PASS上, 有人分享一個免費的工具, 名叫SQL PAGE VIEWER. 看起來好像不錯用的, 不過心中想的另一個方向是, 看page不就是用DBCC去打印就可以了嗎? 還是這個工具有什麼不一樣的地方呢? 好奇心讓Colin花了時間測試, 測完了心中在淌血!!! 偶的時間還來~~~ 那麼來看一下這個工具吧.
安裝步驟很簡單的, 基本上就是下一步、下一步的去完成即可, 沒什麼要選擇的.
STEP1: 歡迎畫面, 點選 "next".
STEP2: 授權, 勾選 "I accept the terms in the License Agreement", 再點選 "next".
STEP3: 從安裝路徑來看, 我們可以知道這個工具是設計於 x86平台的, 沒關係的, 就點選 "Next".
當我們去開啟這個工具時, 會提示 .NET Framework 4.0是必要的, 沒裝的可以事後裝, 但沒有就是沒法子.
以上是安裝的部份.
接下來就實際測試看看這個工具在幹嘛了, Colin是先建立一個測試資料庫, 並且塞了幾筆資料進去測試. 以下是相關指令碼:
USE master;
GO
CREATE DATABASE [SQL_PAGE_VIEWER]
ON PRIMARY
(NAME='SQL_PAGE_VIEWER_date',FILENAME='<PATH>\SQL_PAGE_VIEWER_data.mdf')
LOG ON
(NAME='SQL_PAGE_VIEWER_log',FILENAME='<PATH>\SQL_PAGE_VIEWER_log.ldf');
GO
USE [SQL_PAGE_VIEWER];
GO
CREATE TABLE tbl_test(C1 int, C2 nchar(5));
GO
INSERT INTO tbl_test
VALUES
(1,'aaaaa'),
(2,'bbbbb'),
(3,'ccccc'),
(4,'ddddd');
G O
開啟SQL Page Viewer工具程式, 初始畫面長的如下圖所示:
簡單來說:
左上區塊應該是List資料庫清單.
右上區塊是設定項目.
下方區塊是Output Result.
連線上後, 可以看到左上區塊列出了資料庫清單, 並且drill down到table層. 點到table層後就可以列出該資料表所置於哪些page上.
可想而知, 要列出這個清單, 不外乎就是去跑下列的Loop:
1. 取資料庫清單
2. 取資料表 (含schema) 清單
3. 打印 DBCC IND結果.
所以用測試資料庫來做說明的話, 就會像是去執行下列的結果.
USE [SQL_PAGE_VIEWER];
GO
DBCC IND(0, '[dbo].[tbl_test]', -1)
再來就是右上的區塊了, 如果有使用過DBCC PAGE功能的人, 一眼就看出來, 這四個選項, 就是DBCC PAGE使用的參數 "Print option". 同時DB Name, File Number, Page Number 不也就是DBCC PAGE要用到的參數嗎?
所以說, 上面那四個選項, 就相當於下列四行命令.
DBCC PAGE ([SQL_PAGE_VIEWER],1,118,0)
DBCC PAGE ([SQL_PAGE_VIEWER],1,118,1)
DBCC PAGE ([SQL_PAGE_VIEWER],1,118,2)
DBCC PAGE ([SQL_PAGE_VIEWER],1,118,3)
最後來看結果, 透過SQL Page Viewer, 不過就是把DBCC PAGE的結果表格化, 美化一下罷了, 不覺得有特別好用的地方, 下列就舉一例吧! 其他的就給看倌自己去玩玩囉~~~
這是用SQL DBCC PAGE打出來的結果, 真的只是表格化而已.
以Colin的經驗來看, 真的需要去打印Page中的東西, 還是用DBCC PAGE語法去實現吧! 一般不會有啥機會讓技術人員隨便裝工具的………
