︿
Top

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.

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# 的程式碼 .