PDA

View Full Version : مشکل در Sql Server profiler



mehdi mahbobi
پنج شنبه 20 بهمن 1390, 12:43 عصر
سلام دوستان. من یک برنامه دارم که در اون از linq برای query گرفتن استفاده شده میخواستم کلیه ی Sql generate شده رو در Sql Server Profiler مشاهده کنم .ولی نمیدونم چرا فقط login و logout شدن لیست میشه
و با ابنکه تیک نمایش rpc رو زدم ولی بازم قادر به دیدنش نیستم.
اگر متوجه منظورم نشدید بگید تا واضح تر بیان کنم.

in_chand_nafar
پنج شنبه 20 بهمن 1390, 18:22 عصر
دوست عزيز Queryهاي LINQ و EF از نوع Daynamic TSQL مي باشند (TSQL نهايي با استفاده از دستورsp_executesql اجرا مي شود) و جهت Trace اونها در Profiler بايد به نكات زير توجه كنيد
1- به همان Instanceيي نصب شويد كه بانك اطلاعاتي شما بر روي آن قرار دارد
2- جهت سادگي كار و درگير نشدن با مسائل Eventها در Profiler بهتر است نوع Template خود را از نوع Standard Template انتخاب كنيد (تنظيمات اين قسمت درProfiler انجام دهيد) در ضمن Eventي كه حتما بايد انتخاب بشه RPC:Complete مي باشد و حتما چك كنيد كه تيك ستون TextData براي اون خورده باشه
3- حتما دقت كنيد كه كوئري شما در LINQ به شكل Deferred نباشد (خيلي ساده بگم يعني دستور را با سيتكس LINQ يا Lambda Expression نوشته ايد بعد اون رو به چيزي بايند نكرده اي يا TOList و... نكرده ايد صرفا كوئري شما نوشته و Expression Tree اون ايجاد شده و هنوز به سمت SQL نرفته است)

به اين چند تا لينك هم سر بزن
http://weblogs.asp.net/zeeshanhirani/archive/2008/04/18/how-to-use-profiler-with-linq-to-sql-queries.aspx
توي سايت خودمون هم يه فيلم فارسي است كه اين كار رو با استفاده از Entity Framework آموزش داده
http://www.nikamooz.com/index.php?option=com_content&view=article&id=129:-entity-framework-&catid=45:ef&Itemid=114
http://www.nikamooz.com/index.php?option=com_content&view=article&id=130:-entity-framework-&catid=45:ef&Itemid=114

mehdi mahbobi
پنج شنبه 20 بهمن 1390, 19:20 عصر
دوست عزيز Queryهاي LINQ و EF از نوع Daynamic TSQL مي باشند (TSQL نهايي با استفاده از دستورsp_executesql اجرا مي شود) و جهت Trace اونها در Profiler بايد به نكات زير توجه كنيد
1- به همان Instanceيي نصب شويد كه بانك اطلاعاتي شما بر روي آن قرار دارد
2- جهت سادگي كار و درگير نشدن با مسائل Eventها در Profiler بهتر است نوع Template خود را از نوع Standard Template انتخاب كنيد (تنظيمات اين قسمت درProfiler انجام دهيد) در ضمن Eventي كه حتما بايد انتخاب بشه RPC:Complete مي باشد و حتما چك كنيد كه تيك ستون TextData براي اون خورده باشه
3- حتما دقت كنيد كه كوئري شما در LINQ به شكل Deferred نباشد (خيلي ساده بگم يعني دستور را با سيتكس LINQ يا Lambda Expression نوشته ايد بعد اون رو به چيزي بايند نكرده اي يا TOList و... نكرده ايد صرفا كوئري شما نوشته و Expression Tree اون ايجاد شده و هنوز به سمت SQL نرفته است)

به اين چند تا لينك هم سر بزن
http://weblogs.asp.net/zeeshanhirani/archive/2008/04/18/how-to-use-profiler-with-linq-to-sql-queries.aspx
توي سايت خودمون هم يه فيلم فارسي است كه اين كار رو با استفاده از Entity Framework آموزش داده
http://www.nikamooz.com/index.php?option=com_content&view=article&id=129:-entity-framework-&catid=45:ef&Itemid=114
http://www.nikamooz.com/index.php?option=com_content&view=article&id=130:-entity-framework-&catid=45:ef&Itemid=114


ممنون از پاسخ شما. لینک اول رو قبلا" دیده بودم .کاری که اونجا گفت هم انجام دادم و ستون ها و event های مورد نظر رو هم تیک زدم ولی در زمان trace چیزی در ستون مورد نظر درج نمیشه. در ضمن من SQLEXPRESS متصل میشم.
بنظرم مشکل باید در تنظیمات اتصال به سرور یا دیتابیس باشه.

یه نمونه از query هام اینجوریه:
var nwindDataContext = new northwindDataContext();

// Category names and abbreviations
var categoriesWithAbbrev =
from category in nwindDataContext.Categories
select new
{
name = category.CategoryName,
abbrev = category.CategoryName.Substring(
0, 3).ToUpper()
};

Console.WriteLine("Category names and abbreviations");
foreach (var cat in categoriesWithAbbrev)
{
Console.WriteLine("{0} ({1})",
cat.name, cat.abbrev);

}

در مورد گزینه 3 میشه کمی بیشتر توضیح بدیذ.