PDA

View Full Version : امکان ردیابی Select ها



Farhad.B.S
دوشنبه 26 مرداد 1383, 22:19 عصر
با سلام ،
آیا امکانی برای قرار دادن تریگر برای دستور Select در SQL Server وجود داره ؟

AminSobati
دوشنبه 26 مرداد 1383, 22:42 عصر
فرهاد جان،
ساخت Trigger فقط برای سه عمل اصلی ویرایش اطلاعات امکان پذیره. اگر دقت کنید، اصولا Trigger برای SELECT چندان مفهومی نداره. من اطمینان دارم برای کاری که شما قصد انجامش رو دارین، راه حل مناسبی در SQL Server وجود داره. نیاز اصلی شما چیه؟

موفق باشین،
امین ثباتی MCSD

vadood
دوشنبه 26 مرداد 1383, 23:20 عصر
اگه می خواهی ببینی کاربرهای سرور چه کوئری هایی می گیرن، راهش استفاده از profiler هستو بیشتر توضیح بده که چیکار می خواهی بکنی

Farhad.B.S
سه شنبه 27 مرداد 1383, 10:59 صبح
با تشکر ،
فرض کنید به عنوان یک شمارنده ، قراره با دیده شدن مطلبی یک عدد به فیلدی در جدول دیگه اضافه بشه.

AminSobati
چهارشنبه 28 مرداد 1383, 09:07 صبح
زمانی که شما یک رکورد رو SELECT میکنین که به کاربر نمایش بدین، یقینا توانایی بدست آوردن ID اون رکورد از جدول رو هم دارید. پس با استفاده از اون ID و دستور UPDATE میتونین این کار رو انجام بدین. به عنوان مثال اگر رکوردی که نمایش داده شده دارای ID برابر با 150 هستش:


UPDATE tblHits SET counter=counter+1 WHERE recID=150

ولی دقیقا نیاز شما چیه؟ آیا در بدست آوردن ID رکورد مشکل دارین یا ؟...
لطفا بیشتر توضیح بدین.
با تشکر،
امین ثباتی

Farhad.B.S
چهارشنبه 28 مرداد 1383, 13:20 عصر
دوست عزیز ،
این رکورد حتما قرار نیست که توسط من انتخاب بشه ، ممکنه توسط یک یوزر دیگه و از یه کانکشن دیگه (مثلا محیطی مثل EM) انتخاب بشه ...
اصلا فلسفه وجودی تریگر همینه . در Books Online هم همونطور که اشاره کردید گفته شده که تریگر ها فقط برای Delete و Update وجود دارند. هدف اصلی من این بود که ببینم آیا راه فرعی دیگه ای وجود داره ؟

AminSobati
چهارشنبه 28 مرداد 1383, 22:29 عصر
فرهاد جان،
آیا یوزرهای شما از طریق مثلا ASP یا یک نرم افزاری که شما تهیه کردید به Database دسترسی دارن یا اینکه مستقیما خودشون از طریق Utilityهای SQL Server روی Database کار میکنن؟

Farhad.B.S
چهارشنبه 28 مرداد 1383, 23:21 عصر
از هر دو راه ،
همونطور که در اولین پستم هم عرض کردم موضوع فقط اینه : "یک تریگر که با خوانده شدن رکوردی ، اجرا شود."

AminSobati
پنج شنبه 29 مرداد 1383, 00:09 صبح
فرهاد جان،
مشکل اصلی در زمانی هستش که یوزرها توسط ابزار خود SQL Server و کلا ابزارهایی که سورس اون در دست ما نیست اقدام به مشاهده اطلاعات میکنن و Query میفرستن. زیر نظر گرفتن این اعمال، وارد مبحث بسیار مفصلی میشه به اسم Auditing. این روزها در بین بانکهای کشور هم صحبت IT Auditing داغ شده که بخشی از اون Database Auditing یا همین کار مد نظر شما هستش. هر نوع دیتابیسی امکانات خاصی رو برای این کار فراهم میکنه و در SQL Server این قابلیت به اسم Trace عرضه و معرفی شده. Profiler که ودود عزیز بهش اشاره کردن در حقیقت یک ابزار Visual برای استفاده از امکانات Trace هست و شما میتونین بدون استفاده از Profiler، اقدام به ساختن Trace از داخل Stored Procedure کنین و به عنوان مثال، تمام SELECTهایی که روی یک تیبل خاص اتفاق میافته رو ذخیره کنین. بعدا امکان پردازش این SELECTهای به دام افتاده وجود داره! متاسفانه این راه به سادگی Trigger نیست ولی با این امید توضیح دادم که شاید شما رو به هدفتون نزدیک تر کنه.
موفق باشین
امین ثباتی

Farhad.B.S
پنج شنبه 29 مرداد 1383, 10:59 صبح
با تشکر از راهنمایی و توجهتون :flower:

AminSobati
پنج شنبه 29 مرداد 1383, 11:10 صبح
:) موفق باشین