Posts

Showing posts from October, 2013

[SQL Server] 關於發送電子郵件(email)例子

今天小弟需要在SQL Server 2008上建立一個每天定時執行的Jobs(作業), 而這個Job出現問題的時候會發出email告訴DBA. 由於公司的SQL Server並沒有設好mail server, 所以今天在網路上整理了一下資料, 分享給有需要的大大參考:
先設定DataBase Mail:
funkent大的SQL Server 無敵手冊第十三篇-設定SQL Server的Database Mail 講得很詳細, 小弟就不多說明了. 設好以後可以按"Send Test E-mail" 做下測試.再來把DataBase Mail 連結到SQL Server Agent:
funkent大的另一篇 SQL Server 無敵手冊第十四篇-設定SQL Server Agent使用Database Mail 也有很詳細的說明怎樣弄.在SQL Agent底下建立Operator帳號:
同上也有介紹怎樣設定.最後在作業(Job)中的Notifications頁面, 在e-mail中選擇剛剛建立的Operator.完成. p.s:  funkent關於資料庫的文章寫得很不錯, 要用的幾乎都寫到了, 所有文章可以到這裡看看

[SQL SERVER] 找出LOCK方法懶人包

話說休假回公司才不到兩天SQL SERVER就出狀況 Orz

昨天同事跟我說文件系統不能存取ID, 第一件事當然想到是存放ID的資料表LOCK住了.

要查出LOCK方法其實有很多, 以下是小弟歸納的網路資源, 希望幫到大家

什麼是LOCK?
德瑞克大的解釋很詳細: http://sharedderrick.blogspot.com/2007/12/blocked-lock-connectoin.html

sp_lock:
使你對系統中發生的LOCK有深入的了解。它會從master資料庫中的syslockinfo中截取與LOCK相關的大量訊息[1]. 不過我認為由於這個功能的資訊太多, 而且資料沒有好好的做sorting, 所以在危急關頭未必有閒去慢慢看.
在sp_lock會看到spid、dbid、objid、indid、type、resource、mode和status共八個欄位[2].

spid: 連線ID. 可配塔sp_who找出用那些用戶和該連線(spid)有關連.dbid: 資料庫的唯一編號Objid: 資料表的唯一編號, 可用select object_id('<table name>') 找到資料表相關Objid 其他的欄位可以在這裡找到相關意思.
sp_who2 sp_who的加強版本. sp_who主要提供 Microsoft SQL Server Database Engine 執行個體中有關目前使用者、工作階段和處理序的資訊[3]。而sp_who2比較像是sp_who的view, 把sp_who的資料整理得比較好. 小弟經常用它來找出那台PC的發出的process產生了LOCK. 然後毆飛那個user


列出最初導致一連串其它處理序被鎖住的起始源頭(Blocking locks)
很多時候LOCK住的原因是其他的LOCK引發的, 要找出這種關係可以用下面網址的SQL

列出最初導致一連串其它處理序被鎖住的起始源頭http://www.dotblogs.com.tw/karen0416/archive/2011/11/18/58623.aspx
或者是德瑞克大寫得好好用的SQL
http://sharedderrick.blogspot.com/2007/12/blocked-lock-connectoin.html

取得 SQL Serv…