چطور بفهمیم چه کسی دستورات DDL را در Instance ما اجرا کرده؟

چطور بفهمیم چه کسی دستورات DDL را در Instance ما اجرا کرده؟
آکادمی آی تی
آکادمی آی تی
dots

چطور بفهمیم چه کسی دستورات DDL را در Instance ما اجرا کرده؟

زمان مورد نیاز برای مطالعه 5 دقیقه

چگونه می توانیم متوجه شویم چه کسی دستورات DDL (Create ، Drop ، Alter) را در Instance ما اجرا کرده است؟ برای یادگیری این مقاله را مطالعه کنید.

دپارتمان ‌ها: آموزش طراحی سایت
1399/09/15
4,618 بازدید

یکی از وظایف مهم هر DBA ای محافظ از آبجکت های موجود در یک Instance می باشد. همانطور که می دانید DDL مخفف Data Definition Language بوده که شامل سه دستور Create، Drop، Alter است.

  • دستور Create : از این دستور برای ایجاد یک آبجکت در اسکیوال سرور استفاده می شود. مانند ایجاد یک دیتابیس و یا ایجاد یک جدول و غیره
  • دستور Drop : از این دستور برای حذف یک آبجکت در اسکیوال سرور می توانیم استفاده نماییم. به طور مثال جهت حذف یک View و یا حذف یک ایندکس و غیره
  • دستور Alter : از این دستور جهت تغییر ساختار یک آبجکت می توانیم استفاده نماییم. به طور مثال تغییر سایز فایل های دیتابیس و تغییر نام فیزیکی نام فایل های دیتابیس و غیره.

از آنجایی که آبجکت های موجود در Instance ما بسیار مهم بوده و باید به خوبی از آنها نگهداری نماییم. لذا باید تدابیری را اتخاذ کنیم تا چنانچه اتفاقی در Instance ما افتاد، سریعا از آن با خبر شویم. به طور مثال میخواهیم متوجه شویم چه کاربری دیتابیس ما را پاک کرده است؟ و یا اینکه چه کسی فلان جدول ما را پاک کرده است؟

برای اینکه متوجه شویم چه کسی آبجکت ما را تغییر داده و یا پاک کرده است ویا آبجکتی را ایجاد کرده است، روش های مختلفی وجود دارد.

 

روش اول: استفاده از گزارش های خود اسکیوال سرور

برای اینکار کافیست در محیط اسکیوال سرور بر روی Instance خود مطابق شکل زیر کلیک راست نموده و گزینه Reports را کلیک و سپس گزینه Standards Reports را کلیک نماییم و نهایتا بر روی Schema Changes History را کلیک نماییم.

 بر روی Schema Changes History را کلیک نماییم.

 

در این صورت پنجره ای مطابق شکل زیر نمایان می گردد. در این گزارش علاوه بر نام کاربری که باعث این تغییر شده است. اطلاعات دیگری را نیز می توان یافت. به طور مثال تاریخ و زمانی که باعث این تغییر شده است یا اینکه از کدام دیتابیس، چه آبجکتی حذف و ایجاد و تغییر یافته است.

تاریخ و زمان یا اینکه از کدام دیتابیس، چه آبجکتی حذف و ایجاد و تغییر یافته

 

روش دوم: ایجاد Audit در اسکیوال سرور 

شما می توانید بر روی دیتابیس هایی که مهم هستند Audit قرار دهید تا متوجه تمامی تغییرات بر روی آن دیتابیس گردید. برای این کار ابتدا باید در قسمت Security بر روی گزینه Audit کلیک راست نموده و گزینه New Audit را مطابق شکل زیر کلیک نمایید.

گزینه New Audit

 

حال در پنجره باز شده ابتدا یک نام گویا و دلخواه به Audit خود اختصاص دهید. سپس مسیر ذخیره شدن فایل ها را مشخص نمایید. در قدم بعدی، قسمت Maximum files را انتخاب نموده و به طور مثال عدد 10 را وارد نمایید. این بدان معناست که حداکثر ده عدد فایل در مسیر که مشخص نمودید، جهت ثبت تغییرات ایجاد شود.

 

آموزش اس کیو ال سرور 2019آموزش مرتبط: آموزش SQL Server 2019 مقدماتی

 

حال برای وارد کردن سایز عدد مربوط به Maximum file  ابتدا چک مارک مربوط به unlimited را بردارید و سپس به طور مثال عدد 215 را در قسمت Maximum file  وارد نمایید. این عدد به طور پیش فرض به مگابایت می باشد.

کامل کردن فیلد های صفحه create Audit

 

در قدم بعدی باید برویم سراغ دیتابیسی که می خواهیم تغییرات آن را ثبت نماییم. مطابق شکل زیر کافیست علامت مثبت دیتابیس SalesDB را باز کرده و به قسمت Security برویم. سپس بر روی گزینه Database Audit Specification کلیک راست زده و گزینه New Database Audit Spesification را کلیک نمایید.

گزینه New Database Audit Spesification

 

در پنجره باز شده درقسمت Name ابتدا یک نام مناسب وارد می نماییم. سپس در قسمت Audit باید نام Audit ای قبلا تعریف کرده ایم را در این جا تنظیم نماییم. درقدم بعدی باید Action ای که می خواهیم را تنظیم نمایید. به طور مثال ما به دنبال این هستیم که بعدا اگر گزارش گرفتیم متوجه شویم چه کسی دیتابیس ما را پاک کرده است. کافیست در اینجا دستور Delete را انتخاب نماییم.

دستور Delete را انتخاب نماییم.

 

سپس در قسمت object Class کافیست گزینه DATABASE را انتخاب نمایید.

در قسمت object Class کافیست گزینه DATABASE

 

در قسمت بعدی نام دیتابیس خود را مشخص می نماییم.

نام دیتا بیس

و نهایتا در قسمت بعدی باید نام User خود را اضافه می نماییم. لازم به ذکر است که اگر چند کاربر داشته باشیم باید به ازاء تک تک این کاربرها در همین صفحه این تظیمات را انجام دهیم.

 نهایتا در قسمت بعدی باید نام User

 

در آخر بر روی دکمه OK کلیک کنید. در قدم آخر باید از کوئری زیر جهت خواندن این فایل های مربوط به Audit اقدام نمایید.

SELECT *
FROM sys.fn_get_audit_file ('C:\Temp\*.*', default, default)

 

روش سوم: استفاده از SQL Server Profiler

این روش اصلا پیشنهاد نمی شود و سیستم شما را خصوصا در محیط های عملیاتی واقعی به شدت کند می کند.

 

روش چهارم: استفاده از کوئری ها و اسکریپت های آماده

در سایت های معتبر این کوئری ها موجود می باشند. با یک جستجو ساده می توانید این کوئری ها را پیدا کنید.

 

روش پنجم: استفاده از ابزار ها

با استفاده از یکسری ابزارهای موجود مثل Redgate و یا APEX و غیره می توانید پی به تغییرات ایجاد شده بر روی دیتابیس خود پی ببرید.