PDA

View Full Version : تشخیص رکوردهای آپدیت شده یا جدید اضافه شده به وسیله خود sql server



computer-mag
دوشنبه 13 تیر 1390, 17:49 عصر
سلام

صورت کار به این صورت است که ما دیتابیسی با چند جدول داریم که دایم جدولها محتویاتشون تغییر میکنه ولی همه اونها دچار این تغییر نمیشن در حال حاضر هم حدود 50 هزار رکورد در یکی از جداول موجوده می خواستم ببینم آیا ما می تونیم به نحوی مثلا در پایان هر روز یا در پایان یک بازه زمانی مشخص ببینیم که کدام رکوردها تغییر کردن یا جدید اضافه شدن؟ و ترجیحا بشه اونایی که دچار تغییر شدن در یک جدول تمپ و اونایی همکه جدید هستن در یک چدول تمپ دیگه ذخیره بشن که بشه ؟ نسخه sql server 2000 و به دلیل محدودیت برنامه ای که با این دیتابیس کار می کنه نمی تونیم مثلا فیلدی رو در نظر بگیریم که تاریخ آخرین تغییرات هر رکورد را ذخیره کنه برای همین می خواستم ببینم آیا با استفاده از امکانات داخلی خود sql server میشه به اونهایی که تازه تغییر کردن و یا جدید اضافه شدن در یک بازه زمانی مشخض دست پیدا کرد؟ اگر امکانش هست لطفا راهنمایی فرمایید با تشکر از ما

حمیدرضاصادقیان
سه شنبه 14 تیر 1390, 07:45 صبح
سلام.
اگر از نسخه های جدید SQL Server استفاده می کردید اینکار راحتتر بود. ولی در نسخه 2000 شما تنها کاری که میتونید انجام بدید نوشتن تریگر روی جداولی هست که تغییر میکنند . که این تریگرها برای update,Insert باشند و هروقت رکوردهایی تغییر کردند خودش اونها رو در جداول Temp ذخیره کنه که در نهایت شما بتونید از اون جدول Temp گزارش بگیرید.

computer-mag
سه شنبه 14 تیر 1390, 13:12 عصر
میشه یه نمونه از این تریگرها را واسم بنویسید و بفرمایید چجوری اجرا میشه؟

حمیدرضاصادقیان
سه شنبه 14 تیر 1390, 15:26 عصر
طریق نوشتن تریگر در اینجا (http://barnamenevis.org/showthread.php?106494-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%AA%D8%AD%D8%AA-SQLServer) آموزش داده شده است.
برای اجرای تریگر نیازی نیست کاری بکنید.وقتی روی جدول مثلا تریگر Update نوشته شده زمانی که اون جدول update میشه به طور خودکار اون تریگر اجرا خواهد شد.

computer-mag
سه شنبه 14 تیر 1390, 16:34 عصر
از پاسختون و راهنماییتون خیلی متشکرم تقریبا چیزی هست که می خوام، کمی پروژه باز می کنم واستنون که دقیقا متوجه کار ما بشین شاید راه بهتر و یا پیشنهاد خوبی از شما به ما بشه که بتونه کمکمون کنه.
ببینید ما جدولی تحت Sql serverداریم که بیشتر از 45 هزار رکورد داره روی یک کامیپوتر شخصی به صورت لوکال حالا ما می خواهیم با استفاده از PHP اطلاعات درون این جدول و بخونیم و در حدولی از نوع MySql روی هاست ذخیره کنیم تا اینجای کار مشکلی نیست ولی اصل کار بر میگرده اینجا که مکنه که 45 هزار رکوردمون آپدیت بشن و یا یا رکوردی اینسرت بشه، حالا با استفاده از تریگر ها ما جدولی می سازیم و پس از رخ دادن این رویداد ها اون رکوردها میرن توی اون حدول مورد نظر، خالا می خواهیم مثلا ساعت 6 عصر یک تکه برنامه PHP اجر کنیم که جدول ها رو میرور کنه و خوب بعد از انجام این کار جدولTemp که در نظر گرته بودیم باید پاک بشه تا دوباره روز بعد تریگر نوشته شده اونرو به روز رسانی کنه به نظر شما روش درستیای که وقتی کل تغیرات میرور شد با استفاده از برنامه میرور کننده جدول را پاک کنیم یا میشه با استفاده از خود SQL Server عملیات بهتری روی اون انجام داد؟