我們使用帶有Sybase bcp的命名管道,以便我們可以即時壓縮輸出。如何可靠地捕獲Sybase bcp錯誤?
Sybase bcp實用程序在其退出代碼中不會返回太多信息。 Sybase文檔指導用戶檢查進程寫入的錯誤消息。
這是我們使用的錯誤處理習慣用語的解釋,在腳本的非bcp部分中的一些錯誤檢查已被刪除以縮短示例。
while :
do
{
rm -f $fifo
mkfifo $fifo
cat $fifo &
CatPid=$!
bcp $db.$owner.$table out $fifo -c $db_creds >$log 2>&1
grep -qi deadlock $log || break
# Must have been a deadlock, clean up.
kill $CatPid
} > $output
done
基本上,如果單詞'死鎖'出現在bcp輸出消息中,我們再試一次。
兩個問題
- 請問這種做法看起來合理嗎?
- 除了死鎖之外,還有哪些其他bcp錯誤需要我們擔心?
我特別感興趣的是檢測瞬態bcp錯誤,我們可以再次嘗試。
我們使用複合語句,以便我們可以在壓縮之前在bcp數據周圍插入頁眉和頁腳,但爲了簡化示例,我忽略了這一點。
你好,來自Blighty Mark。這一個具體是一個bcp out。 – 2009-10-20 05:31:42
我們工作的環境可能無法引入Sybase :: BCP。我記得幾年前嘗試過,當時有一些問題,最後直接調用bcp。 – 2009-10-20 13:23:57
從悉尼過來的日子!對不起 - 沒有注意到你在談論bcp。 – 2009-10-23 02:26:03