سالها پیش در شرکتی مشغول به کار بودم یکی از مشتریان شرکت طی تماسی اعلام کرد که برخی از اطلاعات شرکت در بانک اطلاعاتی تغییر پیدا کرده و این موضوع باعث شده که شرکت دچار مشکل شود.
نام ابزار: Apex SQL Log
کاربرد: بررسی محتویات Log File
سایت سازنده: http://www.apexsql.com
لینک مستقیم: http://www.apexsql.com/sql_tools_log.aspx
با بررسی اولیه که روی نرمافزار داشتیم متوجه شدیم که تغییر اطلاعات به طور مستقیم از SQL Server انجام گرفته و از طریق نرمافزار نبوده است.
برای اینکه بتوانیم مشخص کنیم که چه کسی اینکار را انجام داده است به بررسی محتویات Log File پرداختیم اما مشکل اصلی زمانی مشخص شد که می خواستیم محتوای Log File را از حالت باینری خارج و آن را مورد بررسی قرار دهیم. پس از گشت و گذار در اینترنت یکی از قویترین برنامههای آنالیز Log File به نام Apex SQL Log را پیدا کردیم.
این موضوع گذشت تا اینکه چند هفته پیش یکی از دوستانم طی تماسی اعلام کرد که به مشکلی مشابه برخورد کرده، به او پیشنهاد کردم به سراغ برنامه Apex SQL Log را برود. و حالا در این مقاله تصمیم گرفت کاربرد این برنامه را به شما نشان دهم.
همانطور که قبلاً هم اشاره شده است محتوای باینری فیلد Log Record موجود در Log File را به راحتی نمیتوان به زبان قابل فهم تبدیل کرد.
کوئری زیر نحوه استخراج Log Recordها را از log File مربوط به یک بانک اطلاعاتی نمایش میدهد.
[sql]
SELECT L.[Current LSN],L.Operation,L.Context,L.[Log Record] FROM ::fn_dblog(null,null) L
GO
[/sql]
برای اینکه دادههای مربوط به Log Recordها را به زبان قابل فهم تبدیل کرد باید سراغ استفاده از برنامهها جانبی رفت یکی از این برنامهها Apex SQL Log نام دارد با استفاده از این برنامه شما میتوانید محتوای Log File را به طور کامل مورد آنالیز و بررسی قرار دهید.
آنالیز و بررسی محتویات Log File در این برنامه توسط سه حالت زیر امکان پذیر است.
1- بررسی Log File یک بانک اطلاعاتی Online.
2- بررسی فایل LDF یک بانک اطلاعاتی که Detach شده است.
3- بررسی یک Log backup
در هر سه حالت محتوای Log File به طور کامل مورد بررسی قرار گرفته و اطلاعات موجود در آن به شما نمایش داده میشود.
یکی دیگر از امکانات موجود در این برنامه امکان فیلتر کردن دادههای موجود در برنامه بر اساس پارامترهای مانند زمان، نوع عملیات، جدولی که عملیات بر روی آن انجام یافته، فیلدی که مقدار آن تغییر یافته و… میباشد. در تصاویر زیر بخشی از قسمت Filtering این نرمافزار بررسی شده است.
پس از فیلتر و تایید آن نرمافزار شروع به بررسی و آنالیز Log File کرده و اطلاعات آن را بر اساس شرایطی که شما تعیین کردهاید نمایش میدهد.
در نتیجه نمایش داده شده میتوان با کلیک بر روی هر کدام از رکوردها جزئیات آن را همانند تصویر زیر مشاده کرد. برای مثال با توجه به اینکه ما در جدول Order Details به دنبال تغییر فیلد Unit Price رکوردی خاص بودهایم پس از پیدا کردن رکورد مورد نظر مقدار قبل از Update و بعد از Update را میتوان مشاهده نمود.
همچنین بوسیله این نرمافزار میتوانید اسکریپت مربوط به Undo کردن تغییرات در بانک اطلاعاتی را استخراج نمود.
در پایان لازم میدانم به چند نکته اشاره کنم.
1- برای اینکه بتواتنید محتوای Log File را همانند نرمافزار Apex SQL Log در برنامههای خود نمایش دهید میتوانید از API آن استفاده نمایید.
2- این برنامه صرفاً دادههای موجود در Log معرفی شده به یکی از سه حالت اشاره شده را نمایش میدهد. بنابراین توقع نداشته باشید که تغییرات 10 سال پیش مربوط به بانک اطلاعاتی را بتوانید از آن استخراج کنید. (البته انجام اینکار صرفاً با داشتن Log Backup و یا ldf مربوط به آن زمان امکان پذیر است)
3- نسخه Trail این برنامه دارای محدودیتهای در نمایش تعداد Log Recordها میباشد.
23 دیدگاه
مهدی ربانی ذبیحی
با سلام اقای مهندس این ابزار کرک شدش موجود چون من دارم اما به دلیل اینکه کرک نیست درست کار نمیکنه
من
کرک شده این نرم افزار در سایت های فارسی هست
نسخه 2014
محمدحسین عبدالهی
با سلام
آیا هر عملی که کاربر در SQL Server انجام می ده منظور CRUD در Log ها ذخیره می شه؟ اگر این کار انجام می شه و می تونیم این اطلاعات رو واکشی کنیم چه نیازی به استفاده از CDC هست ؟
مسعود طاهری
سلام
حمیدقلیپور
با سلام و احترام
مسعود طاهری
بله این ابزار یکی از ابزارهای مهم در خصوص خواندن محتوای لاگ فایل است.
ابراهیم
سلام مهندس جان.
من یک سوالی در مورد کامپوننت های Apex داشتم.
ما برای برنامه نویسی در محیط C# از ابزاری استفاده می کنم به نام Resharper که باعث میشه جایی اگه کدی رو میشه بهینه کرد به من میگه و بعد کلیک کردن خودش شروع میکنه به اصلاح کردن اصلاح این قطعه کد یا اینکه در طراحی کلاس خیلی به کار من سرعت و نظم میده.
حال برای سمت SQL من با دوست خودم صحت کردم و گفتم Apex میتونه به من در بهنه کردن و سرعت بخشیدن کمک کنه جوابی که به من داد زیاد برام جالب نبود گفت نه Apex الان به درد نمیخوره زمانی به درد میخوره که کارت تمام شد و میخوای ببینی اوضاع بانک چطوره که این جوابش برام زیاد جالب نبود. یعنی این کامپوننت با این همه ابزار کلا برای بهبود کارهای ما در طول طراحی به درد نمیخورن؟؟؟مگه میشه؟؟؟
و یک سوال دیگه که ساید جایش اینجا نباشه.
از دوستی دیگه مشورت گرفتم تو شرکتی داره کار میکنه که کارشون اوراکله و میگه ماهایی که بخش اوراکل هستیم کد های خودمون رو میزنیم و به وسیله خود اوراکل فرم و گزارشای خودمون رو طراحی میکنیم بعد اینکه کار های خودمون رو کردیم و جواب گرفتیم برای طراحی زیبای ورودی و کار های دیگه میفرستیم به سمت برنامه نویس های حالا تحت ویندوز میخواد باشه یا تحت وب. حالا در SQL Server هم میشه فرم یا گزارش طراحی کرد به طور مستقیم یا باید از ابزار هایی استفاده کرد؟
ببخشید که سوال های خودمو یکج و طولانی پرسیدم.
مسعود طاهری
سلام
ابراهیم
سلامی دوباره خدمت شما مهندس جان.
پس من درست متوجه شدم Apex برای راحتی برنامه نویس در کد نویسی SQL ابزار هایی رو طراحی کرده؟
در مورد سوال دومم بیشتر دنبال فرم هستم مثلا خود Access رو در نظر بگیرین برای خودش طراحی فرم داره آیا SQL هم چنین چیزی داره یا اینکه باز هم باید از ابزار های دیگه ای استفاده کرد
مسعود طاهری
بلی
ابراهیم
مرسی مهندس جان.
ما منتظر پیشنهاد های شما در مورد استفاده از این ابزار ها و چگونگیه استفاده مثل دیگر ابزارهایی که پیشنهاد دادین هستیم.
مجتبی مزورعی
چرا اطلاعات پایگاه داده آن شرکت تغییر می کرد؟
این کار توسط کارمندان انجام می شود؟(چه طور می توان فهمید چه کسی این کار را کرده ؟) و یا خود برنامه به صورت خود به خود؟
اضلا آیا امکان دارد خود برنامه به صورت خود به خود داده ها را تغییر دهد
مسعود طاهری
یکی از بهترین کارها برای انجام این مورد استفاده از قابلیت Audit است .
احمد رضاپور
سلام جناب طاهری.
مسعود طاهری
تمامی این تغییرات به واسطه عملکرد مستقیم و یا غیر مستقیم برنامه ها و کاربرانی است که از بانک اطلاعاتی استفاده می کنند.
علی
سلام
مسعود طاهری
اگر از بانک قبلی خود بکاپ نداشته باشید خیر
حسن ضرابی
با سلام خدمت استاد عزیزم جناب مهندس مسعود طاهری
از بابت توضیحات خیلی خوبتون بسیار ممنونم خیلی عالی توضیح دادید و نرم افزار خوبی را معرفی کردید
از شما بسیار ممنونم
مائده
سلام. وقتتون بخیر.
business user را میتوان از log file استخراج کرد؟
آرزو محمدزاده
با سلام و عرض ادب
به نقل از مهندس مسعود طاهری
خیر
این فایل در جهت فرایند ریکاوری و پروسه های داخلی SQL server مورد استفاده قرار میگیرد.
مائده
آخه ایشون در دوره مجازیشون گفتن که برای microsoft درخواستی مبنی بر افزودن این فیلد به log file فرستاده اند که اگر رای بالایی به آن داده شود این فیلد اضافه می شه، میخواستم ببینم در ورژن 2017 این ویژگی افزوده شده است یا نه؟
مسعود طاهری
سلام اون درخواست یه موضوعی دیگه است
موضوع اون مبنی بر ذخیره اطلاعات ConText Info در فعالیت های نظیر
Audit
CDC
Temporal
اضافه شدن به Log Recordها در هر Action
و…
بود
در هر حالت Log File چیزی نیست که بخواهید روی آن بیزنس ببندید و…
mohammad
میشه نرم افزار Red Gate رو با این مقایسه کنید. ممنون