[MS SQL]利用Extended Events找出逾時過時(Timeout Expired)錯誤的SQL Command
在金控銀行內提供即時金融服務以及個人消費資訊的簡訊平台,必須同時兼具大量運算處理的效能以及即時快速的通訊能力,但資料庫必須保留數年的資料以供查詢。故事是這樣發生的,使用者向銀行資訊中心反應有時候查詢跨月份的彙總報表時,會出現資料庫查詢逾時的錯誤,但大部分時候查詢報表又可以正常出現….
在金控銀行內提供即時金融服務以及個人消費資訊的簡訊平台,必須同時兼具大量運算處理的效能以及即時快速的通訊能力,但資料庫必須保留數年的資料以供查詢。故事是這樣發生的,使用者向銀行資訊中心反應有時候查詢跨月份的彙總報表時,會出現資料庫查詢逾時的錯誤,但大部分時候查詢報表又可以正常出現….
最近公司NAS APP專案採用Cordova專案來開發,配合使用Ionic v1和AngularJS來撰寫UI功能,在開發過程中很常使用到AngularJS的Factory定義,看了AngularJS官網所寫Factory只是歸屬於Providers的一種使用方式,其他還有Service、Value、Constant、Provider等,接下來我們就依序來介紹這些定義的差異和使用方式。
(一) Value:
當我們只是要一個很簡單的資料定義,我們可以使用Value,官方範例為定義一個Oauth的ClientId來做解釋,如下 :

我們宣告一APP為 myAPP,並定義一個value名稱為clientId並且給予我們要指定的值,那我們定義完要如何使用,AngularJS採用Dependency Injection的方式Injection到Controller中如下圖:

先簡單介紹一下Lock,如同大家在聽到多執行緒時常聽到的哲學家故事,今天一個圓桌上有多位哲學家,每個哲學家中間都擺著一支筷子,當個哲學家要吃飯,必須拿起哲學家左右兩邊的筷子吃飯,而其他兩旁的哲學家這時候只能負責思考,那如果兩旁的哲學家這時也想要吃飯,就會變成第一位哲學家拿起了右邊的筷子,第二位哲學家也拿起了右邊的筷子……,最後所有哲學家都拿起了一支右手的筷子,也全都在等別的筷子,而這樣就會造成死結(Deadlock),每個哲學家就像一個執行緒一樣,在互相搶資源(筷子),這時就要使用Lock,使得CPU避免正在執行的程式與其他執行中的程式互相干擾,講了這麼多我們來看看實際的範例,以下使用微軟lock 陳述式中所提供的範例做說明。
下方程式為模擬一個帳戶(Account)一直被扣隨機數目後,扣至零塊錢的情形。
Azure Function,一開始聽到這名詞是很納悶的,因為相對於Azure VM(Virtual Machine)、Azure DB(Database)等名詞來說,後者是即便沒有接觸也很好想像就是VM、DB放在別人家,User只要連線過去使用,但function卻是包含在一隻程式、甚至只是class中的一個區塊的程式碼,因此對於一個長時間都只在寫後端Service的人而言,腦袋頓時轉不過來,只剩下滿腦子的問號。
其實答案很簡單:就像API通訊一樣。