[工作茶包日記]SQL預存程序排程執行

因專案的Session是存進Sql Server(請參考:State Server設定),即使執行了Session.Abandon()清掉Session,在Sql裡面的Session還是存在著(不過Client端卻時已經無法在讀取到這個Session了,大概是因為清掉的是Client的Cookie導致SessionID遺失,所以無法讀取到Sql Server裡"沒消失的Session")

因此,Sql Server裡面的Session要怎麼刪呢?其實預存程序裡面有個叫作DeleteExpiredSessions可以幫忙刪除過期Session的程序,但它不會主動執行,因此我們就必須用個排程定時執行它
在Google了一下後,發現SQL Server裡面的SQL Server Agent服務可以輕鬆達到這個要求,而且設定上很簡單,於是馬上去SQLServer2014組態管理員試試看起動這個方便的服務,結果發現莫名奇妙的一直無法啟動
錯誤訊息:---------------------------
SQL Server 組態管理員
---------------------------
要求失敗,或服務未即時回應。請參考事件記錄檔或其他應用程式錯誤記錄檔,以取得詳細資料。
---------------------------
確定
---------------------------

查了好一陣子原因後我得到了一個真的很瞎的結論:
...

...

...

...

...

SQL Server Express版無法使用SQL Server Agent服務!
SQL Server Express版無法使用SQL Server Agent服務!
SQL Server Express版無法使用SQL Server Agent服務!


那為什麼在Advanced版安裝程式安裝時還是把這功能安裝進來.....我在那邊試了老半天,一直啟動失敗,查到最後才發現是這鳥原因.......F(消音) You!!!

 那要怎麼解決呢?我們可以用Windows的排程去執行sqlcmd
(未完待續....)

.....靠我居然隔了半年才想到我這篇沒寫完Orz(該吃銀杏了),抱歉讓大家久等了,請接
繼續往下看.....


先儲存要執行的sql語法,例如上圖,接著另存成.sql檔,把檔案放在你覺得你開心的地方(本人放在C:\temp\做舉例),接著開啟記事本,參考下面這段語法:

sqlcmd -S AAA\SQLEXPRESS -i C:\temp\tokenDelete.sql

說明:

AAA:主機名稱,依個人執行環境會有所不同

SQLEXPRESS:執行各體名稱,預設是SQLEXPRESS,依個人執行環境會有所不同

C:\temp\tokenDelete.sql:剛剛存的那個.sql檔的路徑+名稱

以上都設定好後存成.bat檔,之後開啟工作排程器去新增一筆工作排程,選擇剛剛存的bat檔,設定執行時間規則(最小好像可以設定到每30秒執行一次),關於工作排程設定這邊就不多說了,請問Google姊(關鍵字:工作排程 教學)

打完收工~













留言