目前分類: SQL Server    檢視方式: 列表 摘要
從Store procedure寫入event log
willeam 在天空部落發表於11:40:33 | SQL Server
通常我們在寫.net程式時,習慣會將try..catch所攔截到的錯誤寫入到系統的event log,讓我們可以有統一介面去查看各種不同的錯誤訊息.
這種輸出錯誤訊息到event log的手法,其實在Store procedure也可以做到,只要透過此語法就可以.

master..xp_logevent 50001, '錯誤訊息內容', 'ERROR'

輸出後,在event log可以看到此畫面.


裡面則是我們輸出的錯誤訊息.


store procedure最麻煩的就是進行debug,雖然我們可以在SQL Studio裡面debug,但是有時候手動run與透過background job run還是有一點差異,然後又無法像.NET 元件一樣從Visual Studio去attach process的方式monitor元件執行狀況,所以若可以在store procedure執行時,將一些訊息丟出來event log,多多少少可以了解運作的狀況.


清除過大的Database log
willeam 在天空部落發表於00:11:10 | SQL Server

當資料庫run了一段時間後,通常log檔都會很大,而且比原本儲存原始資料的database還大,這時候可以利用此語法清除log.

BACKUP LOG [資料庫名稱] WITH NO_LOG
DBCC SHRINKDATABASE ([資料庫名稱], 10) 


透過DTS 輸出int型別資料到File,卻產生多位小數點
willeam 在天空部落發表於01:10:43 | SQL Server

當你利用 DTS來轉出資料庫資料到文字檔時,假如來源資料裡有某個欄位是數值型別的話,可能需要特別注意一下。

因為,DTS會先根據資料來源來產生虛擬欄位在即將輸出的文字檔裡,此虛擬欄位並無資料型別(因為是輸出到文字檔,而非資料表),所以通常只是交代此欄位是否要加引號(quote)或不加引號,還有長度為何。這時候若在資料的轉換過程中有需要進行數字的處理,如將來源除以10後輸出,這時候可能會發生一個問題,原本應該輸出0.4的結果卻輸出0.400000002 這個怪樣子。

我個人猜想可能是因為目的欄位有設定長度的關係,而且因為目的欄位沒有型別,所以原本應該0.4的數字卻變成0.400000002,這時候必須在資料轉換過程中先將0.4以 CStr()函數強制轉型成純文字在輸出,這樣一來因為是純字串的輸出就不用怕他會搞鬼了。


系統公告
行事曆
Dec 2009
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
記事分類
我推薦誰
目前無名單
好時光貼曆
誰推薦我
目前無名單
誰來我家
RSS 訂閱
贊助商
其它資訊
本部落所刊登之內容,皆由作者個人所提供,不代表 yam 天空 本身立場。
POWERED BY
POWERED BY 天空部落
會員登入免費註冊