PDA

View Full Version : User Log?



gh_fereydonpoor
چهارشنبه 14 اردیبهشت 1384, 20:52 عصر
سلام به همه دوستان
من تا به حال فقط Design کار کردم و تازه می خواهم اطلاعاتی در باره Admin بدست بیاورم
حال آیا جدولی در SQl Server وجود دارد که از کلیه اعمال کاربران Log تهیه و نگهداری کتید
واگر وجود دارد چگونه می شود به اطلاعات آن دسترسی پیدا کرئ.
مرسی ممنون

AminSobati
چهارشنبه 14 اردیبهشت 1384, 23:39 عصر
دوست عزیزم،
در SQL Server هیچ کاری بدون Log شدن انجام نمیگیره. همه اطلاعات در فایل ldf.* دیتابیس ثبت میشه.
اما این اطلاعات برای ما قابل دسترس نیست و خود SQL Server به اون نیاز داره. اگر قصدتون اینه که دقیقا بدونین کاربر چه اعمالی انجام داده، یا خودتون میبایست آستین رو بالا بزنین و کد بنویسین، یا از امکانات Trace استفاده کنین. Trace دقیقا همون کار Profiler رو انجام میده ولی از طریق برنامه شما، نه اینترفیس Profiler:

BOL > How To > Transact-SQL > Administering SQL Server > Monitoring Server Performance and Activity > How to create a trace (Transact-SQL)

gh_fereydonpoor
پنج شنبه 15 اردیبهشت 1384, 14:46 عصر
سلام مهندس
چه جالب یعنی هیج راهی وجود ندارد که بدانیم حداقل دیشب مثلا ساعت 12:00 چه کسانی به Server Sql متصل شده اند از کدام ماشین؟
چون در تاپیک های بالا SP_WHO2 را معرفی کردند ولی این فقط برای حال حاضره
اگر براتون مقدوره یکم بیشتر درباره Profiler و Trace بحث کنید چون من اصلا اینهارو نشنیده ام
مرسی ممنون
یا علی

AminSobati
پنج شنبه 15 اردیبهشت 1384, 17:08 عصر
سلام،
اگر وضعیت لاگین کاربران رو میخواید ببینید، در EM از سرورر Properties بگیرین و در قسمت Security، آیتم Audit Level رو روی All تنظیم کنین.
حالا سرویس SQL Server رو Restart کنین. از الان هر بار که کاربری وارد SQL Server بشه، یا لاگینش موفقیت آمیز نباشه، در Event Log ویندوز ثبت میشه.
ولی برای جزییات بیشتر، در بین Iconهایی که با نصب SQL Server بوجود اومده، Profiler رو باز کنین، حالا اولین Icon به نام New Trace رو کلیک کنین. به SQL Server وصل بشین. بدون تنظیم خاصی، حالا Run رو کلیک کنین.
با هر عملی که کاربرها انجام بدن(حتی کارهای داخلیه خود SQL Server) یک آیتم ثبت میشه. در حقیقت Profiler از امکانات Trace استفاده میکنه. حالا شما Trace رو بدون Profile هم میتونین در برنامه بسازین و کارها رو ثبت کنین.
امیدوارم این به عنوان یک سر نخ کمک کنه تا بتونین هدف مندتر مطالعش کنین.
موفق باشید

TEIMOOR
پنج شنبه 15 اردیبهشت 1384, 23:51 عصر
سلام
ایا کدی هم وجود داره که مثلا بگه در فلان ساعت فلان یوزر این تغیرات را انجام داد در فلان داتابیس و فلان فیلد
این برای من خیلی مهمه اگه راهنمایی کنید
:flower:

AminSobati
جمعه 16 اردیبهشت 1384, 02:37 صبح
سلام،
فرض کنین کاربر عملی رو انجام بده: مثلا با کلیک کردن روی چند آیتم روی فرم نرم افزار شما، قیمت کالاهای موجود در انبار رو 5 درصد افزایش بده. حالا اگر شما در انبار 200 نوع جنس داشته باشید، پس 200 رکورد (اقلا) برای این کاربر میبایست ثبت بشه. اگر امثال این کارها در دیتابیس زیاد تکرار بشه، اطلاعات Log حجمش چندین برابر اصل اطلاعات میشه!
پس نتیجتا ثبت کردن Log به این روش معقول نیست. روشی که SQL Server استفاده میکنه اینه که اصل دستور یا Command رو به همراه زمانش ثبت میکنه. در Trace شما تمام دستورات برای اجرای SPها و غیره رو میبینین پس میشه فهمید که کاربر چه کاری انجام داده. این اطلاعات قابل ذخیره و تحلیل هستند.
موفق باشید

gh_fereydonpoor
جمعه 16 اردیبهشت 1384, 21:24 عصر
سلام مهندس
بله بسیار عالی بود
ولی
مشکل اینجاست که من فقط می خواهم که عمل Delete و یا Update و یا Insert را Log بگیرم زمانی که از T_SQL ها استفاده می کنم 100 چیز دیگرو هم Log میگیره آیا روشی وجود دارد که فقط از این ایتم ها Log تهیه شود؟
و اگر از Enterprice Manage و از Return All Row حذف شود هیچ Log ی ذخیره نمی کند!
مرسی ممنون
یا علی

AminSobati
جمعه 16 اردیبهشت 1384, 23:32 عصر
سلام،
میتونین روی Fieldهای مختلف فیلتر بگذارید تا هر چیزی رو لوگ نکنه

gh_fereydonpoor
شنبه 17 اردیبهشت 1384, 14:40 عصر
سلام مهندس
ولی من فقط Delete را می خواهم آیا می شود به این محدودش کرد و چگونه ؟
مرسی یا علی

AminSobati
یک شنبه 18 اردیبهشت 1384, 00:27 صبح
خوب TextData رو فیلتر کنین به Delete! درست در همون دیالوگی که Run داره و Trace شروع میشه..