بررسی Log ها در SQL Server

در این درس از دوره آموزشی جامع SQL Server، ارائهشده توسط وبسایت طهاکو، به موضوع تخصصی بررسی لاگها در SQL Server پرداخته میشود. این محتوا بر اهمیت لاگها بهعنوان ابزاری کلیدی در مانیتورینگ و عیبیابی تأکید دارد و انواع لاگها مانند Transaction Logs، Error Logs و Security Logs را معرفی میکند. شما یاد میگیرید که چگونه از طریق SQL Server Management Studio (SSMS) یا دستورات T-SQL به این لاگها دسترسی پیدا کنید و با تحلیل دادههای موجود در آنها، مشکلات عملکردی، امنیتی و تراکنشی را شناسایی و رفع کنید. این درس همچنین روشهای تفسیر اطلاعات لاگها و ترفندهایی برای بهینهسازی سیستم را بهصورت عملی آموزش میدهد. با مشاهده ویدیوی این درس، میتوانید مهارتهای خود را در مدیریت حرفهای SQL Server ارتقا دهید و به یک متخصص واقعی در این حوزه تبدیل شوید.
زمانی که ما درباره مانیتورینگ و تنظیم عملکرد sql server 2016 صحبت میکنیم، اولین موضوعی که من میخام معرفیش کنم، این هست که چطور میشه log ها یا همون ورودهایی که به سرور من انجام میشه، رو بررسی کرد.
در این فصل، بحث درمورد ورود هایی هsj که به سرور انجام میشه؛ و ما من بعد به جای ورود از نام لاتین اون، که log هست استفاده میکنیم. اینو بدونید استفاده از مترادف فارسی شون فقط کار خودتون رو سخت تر میکنه. من معتقدم که log ها نه فقط درsql server، بلکه در بسیاری از محصولات it خیلی مهمن.
زمانی که برخی چیزها، راه رو اشتباه میرن و ممکنه در یک محصول it ما به صفحه خطا هدایت بشیم، و حتی زمانی که برخی چیزها رفتار غیرطبیعی دارن و بنظرتون سیستم بد کار میکنه، و یا اینکه شما فقط میخواین درباره یک سیستم و نحوه عملکردش چیزهای بیشتر بدونین، log ها اولین وهله ای هستن که باید واردشون بشین.
در داخلManagement Studio، ما یک log viewer داریم که به ما اجازه میده نه تنها به sql server log ها نگاه کنیم، بلکه برخی از Windows log ها رو هم ببینیم. درست کردن اون برای دیدن هرچیزی در یک مکان میتونه خیلی مفید باشه.
اینجا درManagement Studio، من میخوام که ساختار درختی Management رو باز کنم که در زیر اون یک گزینه برای SQL Server logs داره. من پیش میرم و اون رو هم باز میکنم. روی سرورتون شما ممکنه که تعداد log های متفاوتی رو ببینین. اما همیشه سراغ اونی میریم که Current نامگذاری شده و بعد از اون یک تعداد ارشیو وجود داره. شما میتونین روی هر کدوم از اونها برای دیدن لیست log viewer دوبار کلیک کنین.
خب من همونطور که گفتم قصد دارم روی اونکه با current نامگذاری شده کلیک کنم. اینجا file viewer هایی که درsql server وجود دارن، که در پنجره ای با نام Log File Viewer دیده میشن. من فعلا میخام با کلیک بر روی maximize این صفحه رو بزرگ تر کنم و میبینم در سمت چپ، یک ساختار درختی برای لاگ ها متفاوتی رو که در لیست SQL Server log میدیدیم، اینجا هم داره بهمون نشون شون میده.
و من میتونم روی هر کدوم از اون ها برای تیک دار کردن چک باکس یا پاک کردن چک باکس کلیک کنم و با این کار پنجره و پانل سمت راست تحت تاثیر قرار میگیره؛ و ما می تونیم با اینکار لاگ های مد نظرمون رو فیلتر کنیم. ما علاوه برSQL Server logs، گزینه های SQL Server Agent، Database Mail log رو هم داریم، اینو بگم اکثر مردم Database Mail شون خاموش هست، بخاطر همین ممکنه که ساختار درختی اون خالی باشه و بعد از اون، چند تا از windows log ها از جمله Application log، Security log، System logsهمه اینها خیلی مهمن. این رو هم بگم log های موجود در سرور شما قطعا با اونچه که من در log ام دارم، متفاوت خواهد بود.
در حال حاضر یک دسته از اطلاعات از backup های اخیر دارم که نشون میده اونها به صورت موفقیت امیز انجام شدن و این خوبه. حالا پیش میرم و در Windows NT روی لاگApplication کلیک میکنم و حالا ما رویدادهای sql server log و رویدادهای Application log رو میبینیم که با همدیگه بر اساس یک فیلتر زمانی از جدید ترین لاگ به قدیمی ترین لاگ ادغام و سفارشی شدن. بعضی از اونها یک کار مثبت و مفید انجام دادن و بعضی دیگشون بر عکس. اکثرشون یک کار درست و صحیح رو انجام دادن؛ ما حتی در بعضی از جاها می بینیم که دو تا لاگ یکسان بسته به عملکرد متفاوتشون با همدیگه یک جا ادغام شدن. درکل این پانل یک تصویر واضحی از چگونگی و توالی رویدادها ایجاد کرده.
ما رویدادهای اخیر رو در بالای پنجره LOG داریم و بعد از اون رو به کاهش هست و برای هر کدوم زمان به عقب برمیگرده و در واقع لاگهای زمان قبل رو در قسمتهای پایین تر داریم و ما چون تیک رویدادها رو از SQL Server log و Application log بصورت فعال داریم لاگ های هر دو رو یکجا داریم میبینیم. در حال حاضر یکی از معایب اون این هست که موارد تکراری مشاهده میکنین. اینجا برخی اطلاعاتی وجود داره که به هر دو LOG تیک دار شده وارد شدن، بنابراین میبینیم که برخی از نوشته ها یا خیلی مشابه ان یا درست یکی هستن. ما میتونیم پیش بریم و بر روی یک چک باکس یک لاگ دیگه از پانل سمت راست این پنجره کلیک کنیم و نهایتا خواهیم دید که اطلاعات موجود در این لاگ جدید با اطلاعات موجود برای این دو لاگ فعال ادغام خواهد شد.
من روی سیستم لاگ کلیک میکنم و حالا میبینم که برخی اطلاعات از سیستم لاگ بالا میان و به ما در ارتباط با سرویس های مختلف که متوقف شدن یا شروع بکار کردن، اطلاعاتی رو ارائه میده. شما باید اگاه باشین که لاگ گزینه ها و آپشن های سرچ و فیلتر رو هم داره. اینجا در بالا، من میخوام روی گزینه فیلتر کلیک کنم و من میتونم یا با یک CONNECTION مطمئن یا با START DATE و END DATE که گزینه های فیلتر تاریخ محسوب میشن شروع به فیلتر کردن کنم.
بنابراین اگه شما دنبال یک رویداد باشین که در یک چارچوب زمانی خاصی اتفاق افتاده، مثلا اجازه بدین که بگم، SQL SERVER خراب شده و یجورایی از کار افتاده باشه و میخایم ببینیم که چه زمانی بعد از داون شدنش شروع بکار کرده و استارت شده و یک زمان دقیق رو بدست بیاریم و نهایتا ما میخایم که یک نظر کلی در ارتباط با چارچوب زمانیه کلی اش داشته باشیم، میتونید یک START DATE و یک end date قرار بدین و به این ترتیب لاگ رو توسط زمان فیلتر کنید و بفهمید که دقیقا در چه زمانی سرور شروع بکار کرده.
و ما همچنین میتونیم از طریق این پنجره فیلتر و از قسمت Message contaimnts text به دنبال رویدادهای مختلفی باشیم بعنوان مثال میتونیم متن رویداد رو جستجو کنیم و به دنبال برخی چیزهایی باشیم که متن پیامشون شامل کلمه back up هست؛ پس کافی هست بیایم و درست اینجا کلمه backup رو در قسمت Message contaimnts text تایپ کنیم و اینم بگم قبل از این که بیایم و روی دکمه ok کلیک کنیم، در ابتدا باید روی چک باکس Apply filter برای پذیرفتن فیلتر کلیک کنیم و سپس روی دکمه اوکی کلیک کنیم و ما میبینم که فیلتر پذیرفته شد و حالا لاگ های ما با تنها چیزهایی که کلمه backup در پیامشون دارن، فیلتر شد و بنابراین دوباره من فکر میکنم که لاگ ها خیلی مهم هستن و برای اکثر قسمت ها، مثلا درست هنگام عیب یابی یا تشخیص مشکلات، یا اگه تنها بخواین بیشترین اطلاعات رو درباره sql server تون داشته باشین، لاگ ها اولین وهله ای هستن که باید بهش نگاه کنین.