2010-06-24 58 views
2

我想寫一個通用日誌記錄片段 - 它存儲到一個存儲過程的集合。我寫這篇文章是爲了對我們的前端用戶體驗進行定量衡量,因爲我知道前端軟件使用哪些SP以及如何使用它們。我希望在開始進行性能調整之前使用它來收集基線,然後展示調整的結果。TSQL動態確定SP /功能的參數列表

我可以動態地從@@ PROCID拉對象名稱,但我一直無法確定傳遞的所有參數及其值。任何人都知道這是可能的嗎?

編輯:標記我的回答作爲答案來關閉此問題。出現擴展事件是對性能影響最小的項目,但是我不確定最小性能分析和擴展事件之間是否存在實質性差異。也許是一個下雨天的事情。

回答

0

出現最好的解決方案,我的情況是做分析收集只SP:開始和SP:完成並寫入一些TSQL遍歷數據和填充跟蹤表。

我個人傾向於代碼生成這一點,但在政治上在那裏我的工作他們喜歡這種解決方案。我們在記錄中丟失了一些粒度,但這是解決我的問題的充分方法。

編輯:這是結束一個確定的解決方案。即使只分析這兩項,也會使性能顯着降低。 (我希望我們有一個MSFT提供了一種方式來描述不影響生產性能的工作負載,甲骨文有很好的解決方案,但它也有它的折衷,我很高興看到MSFT實現類似的東西。 DMV和擴展事件有助於關聯項目。再次感謝鏈接Martin。

+0

你是什麼版本的SQL Server? – 2010-06-25 21:11:49

+0

@Martin 2008 R1 – Chad 2010-06-28 20:00:18

+0

在這種情況下,您可以使用比SQL跟蹤http://msdn.microsoft更輕量更靈活的擴展事件。com/en-us/library/dd822788%28SQL.100%29.aspx – 2010-06-28 22:42:01

0

我不知道如何做到這一點從我的頭頂,但我會考慮運行的軌跡,而不是如果我是你。您可以使用SQL Server Profiler僅收集您指定的存儲過程(使用過濾器)的信息。您可以將輸出發送到表格,然後將結果查詢到您的內容。輸出可以包括IO信息,傳遞了什麼參數,客戶端用戶標識和計算機等等。

運行軌跡可以聚集結果到報告中,將顯示一個程序調用多少次後,用什麼參數,等等

這裏是一個鏈接,可能會有幫助:

http://msdn.microsoft.com/en-us/library/ms187929.aspx

+0

我很欣賞評論!是的,我一直在從目前的痕跡中提取一些,但希望找到一個不太乾擾的方式來做到這一點。可以達到我想要的代碼生成只是希望有一個更簡單的方法來做到這一點再次感謝 – Chad 2010-06-24 19:02:51

2

我可以在不解析其文本(至少在SQL Server 2005中)的情況下獲取proc所採用參數的詳細信息。

select * from INFORMATION_SCHEMA.PARAMETERS where 
SPECIFIC_NAME = OBJECT_NAME(@@PROCID) 

我想這意味着我可以用適當的madcap動態SQL來提取它們的值。

+1

+1 - 。!我打我自己的永遠注意到,INFORMATION_SCHEMA視圖 – Thomas 2010-06-24 21:04:30

+0

我希望我傳遞的價值觀,不只是參數類型的信息。感謝您的帖子。 – Chad 2010-07-06 16:13:19