2010-01-22 67 views
0

我正在設置中央構建服務器。服務器負責生成將部署到所有環境的正式構建工件。對於其中一個應用程序,有一個寫入數據庫的構建步驟。在部署時,我們需要將此構建步驟運行到適當的環境。由於以後可靠地重現此構建步驟非常困難/昂貴,所以這個想法源於在部署時捕獲sql僅運行sql腳本。如何跟蹤特定連接到db2的sql命令?

我有超過生成該SQL的源代碼的控制。這是一個使用hibernate的java程序。我還沒有發現,在哪裏放置log4j.properties/log4j.xml來使用hibernate trace功能。準備好的陳述可能會出現問題,顯示'?'而不是實際的價值。

有沒有人有DB2的活動監視器,以及如何使用它的經驗?還是有其他(更簡單)的選項,比如在休眠配置中替換db2驅動程序?不過,我仍然想使用DB2Dialect驅動程序。

編輯:我沒有對數據庫的結構控制。數據庫結構可能會更新,或者進程可能會在將來寫入不同的表。這不應該影響我現在設置的解決方案。

回答

0

在P6SPY看一看:

P6SPY是一個開源框架,即攔截 和有選擇地修改數據庫 語句 支持應用程序。所述P6SPY分佈 包括以下模塊:

P6Log。 P6Log截取並記錄使用JDBC的任何應用程序 的 數據庫語句。此應用程序爲 特別適用於開發人員 監視由 EJB服務器產生的SQL語句,使開發人員能夠在服務器上編寫達到最大效率的 代碼。 P6Spy是 設計安裝在分鐘 並且不需要更改代碼。

http://www.p6spy.com/

+0

我的印象是,p6spy僅適用於在應用服務器上運行的應用。由於這是構建步驟,因此不涉及應用程序服務器。我會仔細看看。 – 2010-01-23 03:32:56

0

如果表是不存在的/空之前ID填滿,你也可以導出結果表包括記錄並導入到在部署時,你的生產數據庫。

正如你已經表示,它可能證明無法確定使用的日誌進行動作表的內容。記錄準備好的語句將不包含綁定的數據,如果執行的操作不止是簡單的插入,您可能會被迫執行部分SQL來重現您記錄的內容。

+0

此工具寫入到現有的數據庫。我不能保證它只寫入一張表,我不能保證數據庫結構將來會改變。這個過程應該仍然有效。 – 2010-01-22 21:45:44

+0

如果工具*更新了您無法控制的現有數據庫,您將如何/確保記錄的SQL腳本能夠成功執行到生產數據庫? – rsp 2010-01-22 21:59:40

+0

我得到了創建數據庫並升級數據庫的腳本。我們(將)具有開發和QA環境。但是,我們使用由第三方開發並作爲二進制文件分發的庫。因此,我們無法更改數據庫結構。我們希望在'只是'deb結構發生變化時不要改變我們的流程。 – 2010-01-23 03:31:49