Sql-Server
在 ColdFusion Administrator 中監控 SQL 事務?
使用 CF9、IIS 和 MSSQL,有沒有辦法監控腳本發送的 SQL 命令?最好顯示原始查詢的東西。
在看到 WEBrick 和 Ruby on Rails 實際上將生成的查詢轉儲到控制台並想知道 CF9 是否有類似的東西後,我有了這個想法。
您可以使用 SQL Server Profiler 來執行此操作。您必須設置跟踪以準確擷取您想要的內容,但它肯定會為您提供原始查詢。
有關 Profiler 的資訊,請查看此 MSDN 文章。
有多種解決方案。正如@squillman 所指出的,您可以通過 Profiler 在 SQL Server 中查看它。但就在 CF 內部,您還有其他選擇。
- 您可以打開 CF 的調試輸出以在請求結束時查看查詢資訊。當然,這有利也有弊。如果在開發中,它通常是好的。在 prod 中,最好避免它(即使您限制了可以查看調試輸出的 IP 地址,因為許多人斷言即使是 otehr 使用者仍然需要為生成的調試付費)。
- 您也可以在程式碼中自己記錄資訊。從 CF7 開始,有一個新的 RESULT 屬性,它包含一個包含查詢數據的結構,包括 SQL 語句。您可以使用 CFLOG、CFTRACE 和其他標籤(或相關的腳本函式)將其寫出來。
- 你也可以讓 CF 自己記錄。CF8 中添加了一個鮮為人知的功能,數據源定義(在 CF 管理中)的“高級設置”中的一個新復選框可讓您“記錄活動”。小心,它很冗長。
- 您還可以使用各種 CF Server Monitor 中的內置監控功能,無論是 CF Enterprise(或 Developer,但不是 Standard)內置的免費監控功能,還是 3rd 方的 FusionReactor 和 SeeFusion。不過,CFSM 只關注慢查詢。FR 和 SF 可以顯示給定請求中的每個查詢(或伺服器上的所有查詢,包括那些與任何查詢無關的查詢,例如客戶端變數清除等)。我認為我特別喜歡 FR 是因為它記錄每個查詢(如果您啟用查詢日誌記錄),而 SF 再次只記錄慢查詢。(每個都可以更改為其他選項。)
- 最後,所有這些工具都通過包裝 JDBC 驅動程序來進行查詢日誌記錄。您也可以使用許多 jdbc 包裝器替代方案中的任何一種,手動完成,無需這些工具。只需Google jdbc 包裝器,您就會發現很多。
我還在我做的一篇部落格文章中更詳細地討論了所有這些選項,雖然它專注於在 CF 中監視 ORM 查詢,但它同樣適用於 CF 生成的任何查詢(以及任何 CFML 引擎):關於 ORM 數據庫互動:任何 CFML 引擎上的 Hibernate、Transfer 等。
最後,我會注意到,關於使用 SQL Server Profiler,請注意它也有其優點和缺點(它可以生成更多關於作為選項可用的查詢的詳細資訊,甚至包括每個查詢的執行計劃圖,這很棒,但是它也像任何監控一樣有一些成本風險,具體取決於事物的配置方式。存在許多資源來解決這個問題和解決方案。
希望這會有所幫助。