不知各位有沒有注意到, 在 SSMS 物件總管視窗 裡 SQL Server 2016 的範例資料庫 (WideWorldImporters) 的剖份 table, 會被標註為 (由系統控制版本), 這個到底是什麼呢? 您可以試著把它點開, 它下面又掛了一個 table, 標註為 (記錄), 如下圖的 Cities 與 Cities_Archive. 其實, 後者 Cities_Archive 就是一個 System-Versioned Temporal Table, 綁定在前者 Cities 身上.
2018年1月1日 星期一
[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.
2017年12月16日 星期六
[SQL Server] Rank Function / Aggregate Function + Over ( Partition By ... Order By ... ) 自我練習
前言
長久以來, 對於 T-SQL 的 OVER ( PARTITION BY ... ORDER BY ...) 的語法, 一直沒有很清楚; 最近終於有時間, 可以稍微 STUDY 一下.
茲分為以下幾個部份及實作步驟進行說明:
2017年12月13日 星期三
[SQL Server] T-SQL 測試輔助工具或方案 (3) : tSQLt + SSDT
前言
因筆者日前看到了 2 篇整合 tSQLt + SSDT 的文章, 看來可以利用 Visual Studio 進行版本控管, 及團隊協同合作; 比單純在 SSMS 進行開發, 有更大的優勢.
茲以下段落進行說明.
2017年12月7日 星期四
[SQL Server] T-SQL 測試輔助工具或方案 (2) : Visual Studio + Specflow + Entity Framework
前言
接續前一篇, 筆者找到的第2個方案是 Visual Studio + Specflow + Entity Framework .
Specflow 是一個用以與使用者溝通的語言工具, 用以描述使用者的需求案例. 適用於整合測試. 當然, 最好是由 Top Down 的方式, 由 BDD (Behavior-Driven Development) 逐步產生實際運作的程式碼 (Production Code); 但若還是不太習慣, 也是可以先寫實際運作的程式碼, 再寫測試方法 (Test Code).
Entity Framework 是微軟以 ADO.NET 為基礎所發展出來的物件關聯對應 (O/R Mapping) 解決方案, 在本文中, 可以用它來建立及清除測試資料.
不過, 該方案需要開發人員, 除了 T-SQL 外, 還要會寫 C# 的程式碼 .
2017年12月3日 星期日
[SQL Server] T-SQL 測試輔助工具或方案 (1) : tSQLt
前言
最近工作上, 可能會需要寫 stored procedure, 想說找一下有沒有測試輔助工具或方案, 以提昇 stored procedure 的品質, 避免後續維護時, 出現改東壞西的狀況.
筆者以免費的工具或解決方案為優先, 找到的第1個方案是 tSQLt. 至於要付費的, 如參考文件 5.., 筆者還沒有時間去試用.
tSQLt 是一套 Open Source 的 Unit Test Framework; 可以協助 SQL Server 開發人員, 直接在 SQL Server 上進行測試.
所謂測試, 是指實際執行值, 與預期值是否相符的驗證. 基本上分為功能性 (單元測試, 整合測試, 使用者測試) 與非功能 (效能測試, 壓力測試).
以下僅就單元測試與整合測試, 用易於瞭解的描述作說明. 至於嚴謹的定義, 可以參考 91哥的系列文章: [30天快速上手TDD]目錄與附錄. 筆者在測試的部份, 深受 91哥 "自動測試與 TDD 實務開發(使用C#)" 課程的影響.
2017年11月20日 星期一
[SQL SERVER 70-762] 考試經驗紀實
因公司工作需求, 最近參加了 SQL Server 70-762 的考試, 這是筆者第1次考 SQL Server 方面的認證, 想說把整個過程, 記錄下來, 供有需要的人作參考.
訂閱:
文章 (Atom)
