2012-11-27 117 views
0

我需要編寫一個可以從C代碼收集SQL Server跟蹤日誌的程序。似乎有幾個方法來做到這一點:MS SQL Server跟蹤日誌集合

  1. 使用最常見的SQL trace方法,其中跟蹤文件通過存儲過程映射到表。然後可以使用SQL/ODBC收集此跟蹤日誌。 問題在於跟蹤文件被旋轉並且大小受到限制。在收集跟蹤信息時,可能會交換跟蹤文件,但並不是收集所有事件。其次,這些存儲過程在未來的版本中將爲removed,因此建立它似乎不是一個好主意。
  2. 建議使用Extended Events代替。這支持ETW和文件目標,但是在服務器端似乎更加複雜,並不是所有的SQL Server版本都支持這一點。還有SMO,但這不提供C API。

那麼正確收集SQL Server跟蹤日誌的建議方法是什麼?

+1

這似乎是你唯一的選擇是:(1)如果你需要支持版本的

回答

-1

這似乎是一個受歡迎的問題。學習C#和使用

public void FileToTable() 
{ 
    TraceServer reader = new TraceServer(); 

    ConnectionInfoBase ci = new SqlConnectionInfo("localhost"); 
    ((SqlConnectionInfo)ci).UseIntegratedSecurity = true; 

    reader.InitializeAsReader(ci, @"Standard.tdf"); 

    int eventNumber = 0; 

    while (reader.Read()) 
    { 
     Console.Write("{0}\n", reader.GetValue(0).ToString()); 
    } 
    reader.Close();   
} 
+0

對不起,但問題是如何從C做到這一點,而不是如何從另一種語言做到這一點。 – b0ti