︿
Top

2018年9月4日 星期二

[SQL Server] How to view the page content with DBCC PAGE (1) : 基礎篇


0. 前言


將近2年前, 筆者曾針對 non-clustered index 的 page 結構, 在 facebook 的 Super SQL Server 社團中詢問, 如本連結, 並非常感謝 Levis Yang, 劉修仁 ... 等前輩的指點, 而有了一些瞭解.

一直以來, 很想對 SQL Server index page 及 data page 的結構及內容, 都有很大的好奇心; 直到最近, 才有機會作一些整理.

對此主題有興趣, 但對 SQL Server 的 index 仍不是很熟悉的朋友, 建議先閱讀 參考文件01 及 參考文件02.

筆者已盡力查詢相關資料, 但有些文章, 受限於個人的能力, 無法全盤瞭解; 故本文僅以個人所能理解的部份作說明.


2018年8月23日 星期四

How to put image file to CDN or Gist, and shared to Google Blogger


0. 前言


因為在寫 Google Blogger 時, 其圖片的網址, 不管是由本地檔案上傳 / Google Album Archive / 手機 / 網路攝影機 / Google Drive 的圖檔分享, 其所產生的超連結, 很不容易辨識, 也沒有一定的規則; 如果想要自行採用外部編輯器撰稿時, 會很不方便 (例如: Sublime Text / Visual Studio Code ...) .

故一直想找一個比較能夠自行控制的儲存空間. 因此想到以下 2 個方案:
方案 1. 用 CDN (Content Deilvery Network) (例如: Cloudinary, CloudFlare, Incapsula ... 等)
方案 2. 用 gist.

方案 1. 如果採用免費版, 通常會有一些儲存空間或流量的限制, 故若是流量很大的部落格, 但又很在意付費的話, 或許可以考慮採用 方案 2.

註: 經實測, 若採用 Google Drive 的圖檔分享, 則真正放到 blogger 的內容, 已經不是原來 Google Drive 上的連結, 而是被 blogger 存到 *.bp.blogspot.com 沒有規則的複雜連結


2018年7月16日 星期一

Sublime Text 3 與 Git (GitHub) 版控機制的整合

0.. 前言


距離前一次使用 Sublime Text 已經快 4 年了, 筆者當時寫了一篇 "Sublime Text 3 操作 與 Emmet 套件安裝及使用 "; 最近因為參加一門 Bootstrap 4 的課程, 而有機會再次接觸.

本文主要在於說明 Sulime Text 與 git (github) 版控機制的整合; 雖然網路上可以查到一些文章, 但總是自己下去作過, 有痛過, 才會有經驗, 故作成筆記, 供有興趣的朋友參考.

本文共區分以下幾個段落, 相關的範例, 可 由此下載.
1.. 以 Package Control 安裝 git plug-in.
2.. 建立一個測試資料夾 (z1-vc_test), 並複製 bootstrap 4 相關的 css 及 js, 建立一個 01.html (based on bootstrap 4 範本)
3.. File / Open Folder ...
4.. 建立 project 及 workspaces
5.. 以 Package Control 安裝 gitignore plug-in.
6.. 建立 .gitignore 檔案, 並存檔
7.. 將現有專案加到本地 Git
8.. 建立第 1 個版本
9.. 加入 1 個檔案試試 ( 02.html )
10.. 查詢異動歷程
11.. 異動1個檔案(01.html), 刪掉1個檔案(02.html) 試試
12.. 上版到 GitHub

事先需準備的環境如下:
(1) SublimeText 3 : 可參考筆者的 這篇, 進行安裝及設定
A. Package Control 套件
B. Emmet plug-in
(2) Git : 可 由此下載及安裝
(3) GitHub : 已申請帳號, 並會建立 repository.


2018年6月16日 星期六

[SQL Server] Table新增欄位, 但對應的 View 卻沒有異動 的處理方式 (sp_refreshview) (進階) : 取出全部相依物件 with CTE, Recursive

0.. 前言


接續前一篇文章, 本文要來探討如何 取出某個 Table 的全部相依物件 (View), 進行 refresh View 的動作.
茲分為以下幾個部份及實作步驟進行說明:

1.. 問題重現
2.. 解決方式
3.. 延伸閱讀 (2018.06.25 補充)
4.. 結論
5.. 參考文件

2018年6月14日 星期四

[SQL Server] Table新增欄位, 但對應的 View 卻沒有異動 的處理方式 (sp_refreshview) (初階) : 只取1層相依物件


0.. 前言

最近發現某個 Table 加上欄位後, 但相依於該 Table 的 View 卻沒有異動的狀況.
本文只取1層的相依物件, 若要取全部相依物件, 請參考 另一篇進階 的文章
茲分為以下幾個部份及實作步驟進行說明:

1.. 問題重現
2.. 解決方式
3.. 結論
4.. 參考文件

2018年1月1日 星期一

[SQL Server] 如何追蹤資料異動記錄 (2) : System Versioned Temporal Table



前言

接續前一篇對 Change Data Caputre 的採討, 本篇會著重在 SQL Server 2016 開始提供的 System-Versioned Temporal Table.

不知各位有沒有注意到, 在 SSMS 物件總管視窗 裡 SQL Server 2016 的範例資料庫 (WideWorldImporters) 的剖份 table, 會被標註為 (由系統控制版本), 這個到底是什麼呢? 您可以試著把它點開, 它下面又掛了一個 table, 標註為 (記錄), 如下圖的 Cities 與 Cities_Archive. 其實, 後者 Cities_Archive 就是一個 System-Versioned Temporal Table, 綁定在前者 Cities 身上.



[SQL Server] 如何追蹤資料異動記錄 (1) : Change Data Capture


前言

以往應用系統的使用者, 常會問說, 我的那筆客戶資料, 到底是誰動過的, 跟我當初所輸入的怎麼會不相同.
如果應用系統作得稍微好一點, 會留下最後那筆資料的異動時間及異動人員; 但這只是留下該筆資料最後一個版本, 並不能找出異動資料的元兇.
如果應用系統作得還不錯, 可能會利用 Trigger, 自行撰寫一段程式碼, 把 inserted 及 deleted 的資料, 寫到一個 Log 記錄檔, 這樣就可以找出異動資料的元兇.
自 SQL Server 2008 開始, 微軟提供了 Change Data Capture 及 Change Data Tracker. 
本文重點在 Change Data Capture. 下一篇會著重在 SQL Server 2016 開始提供的 System-Versioned Temporal Table.