دوست عزیز, اگر با SMO و یکی از زبانهای .Net Frameworkآشنایی دارید انجام اینکار خیلی مشکل نیست. کافیه یک برنامه بنویسید مثل SQL Profiler و یک Profiler Template درست کنید از اون جدولهایی که می خواهید. بعد کد زیر رو اجرا کنید :
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Trace;
using Microsoft.SqlServer.Management.Common;
private void button1_Click(object sender, EventArgs e)
{
try
{
System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(
delegate(object arg)
{
SqlConnectionInfo ci = new SqlConnectionInfo("localhost");
ci.UseIntegratedSecurity = true;
TraceServer reader = new TraceServer();
reader.InitializeAsReader(ci, @"C:\Program Files\Microsoft SQL Server\90\Tools\Profiler\Templates\Microsoft SQL Server\90\TSQL.tdf");
while (reader.Read())
{
string result = string.Empty;
for (int i = 0; i < reader.FieldCount; i++)
{
object value = reader.GetValue(i);
if (value != null)
{
result += "---" + value.ToString();
}
}
listBox1.Invoke(new MethodInvoker(
delegate()
{
listBox1.Items.Insert(0, result);
}));
}
reader.Close();
}));
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
بدین طریق میتونید هر دستوری که روی اون جدولها انجام میشه رو ببینید و بر اساس اون log فایل رو درست کنید.
بعد میتونید از این برنامه یک ویندوز سرویس درست کنید که همیشه در حال اجرا باشه و log فایل رو پر کنه.