ورود

View Full Version : بهترین روش نگهداری داده های تغییرات جداول



resident
یک شنبه 23 تیر 1398, 14:37 عصر
سلام.
من میخوام تاریخچه تغییرات دیتابیس رو یه جایی نگه دارم که مثلا کاربر چه اطلاعاتی رو جدید وارد کرده یا چه تغییراتی رو روی فیلدها داده.

cdc رو دیدم اما باید برای گرفتن گزارش مدنظرم جداول رو join کنم و بعد هر تغییری روی جداول و view هام دادم برای history هم اعمال کنم. تازه یه viewer هم بنویسم.
اگر هم زمانی اشتباهی cdc غیرفعال بشه دیتاهای log شده از بین میره.
دوستانی که تجربه دارن چه روشی رو پیشنهاد می کنن؟
یکی از دوستان می گفت یا trigger بزار رو جداولت یا اینکه تو sp اطلاعات قبل و بعد از اپدیت رو در قالب html نگه دار و همونها رو نمایش بده.

به نظرتون بهترین روش چیه؟ خیلی کارم ضروریه. لطفا راهنمایی بفرمایید

resident
دوشنبه 24 تیر 1398, 12:21 عصر
چرا انجمن غیرفعاله؟ کسی جواب میده؟

fakhravari
سه شنبه 25 تیر 1398, 06:36 صبح
سلام.
من میخوام تاریخچه تغییرات دیتابیس رو یه جایی نگه دارم که مثلا کاربر چه اطلاعاتی رو جدید وارد کرده یا چه تغییراتی رو روی فیلدها داده.

cdc رو دیدم اما باید برای گرفتن گزارش مدنظرم جداول رو join کنم و بعد هر تغییری روی جداول و view هام دادم برای history هم اعمال کنم. تازه یه viewer هم بنویسم.
اگر هم زمانی اشتباهی cdc غیرفعال بشه دیتاهای log شده از بین میره.
دوستانی که تجربه دارن چه روشی رو پیشنهاد می کنن؟
یکی از دوستان می گفت یا trigger بزار رو جداولت یا اینکه تو sp اطلاعات قبل و بعد از اپدیت رو در قالب html نگه دار و همونها رو نمایش بده.

به نظرتون بهترین روش چیه؟ خیلی کارم ضروریه. لطفا راهنمایی بفرمایید



تریگر راحت ترین حالت است.

resident
سه شنبه 25 تیر 1398, 06:46 صبح
تریگر راحت ترین حالت است.

جناب فخرآوری مشکل استفاده از تریگر اینه که Locking جدول رو می بره بالا.

یه روشی هم که دیدم یه فردی انجام داده بود این بود که رکورد قبل از آپدیت و بعد از آپدیت رو در حالت html ذخیره می کرد تو یه فیلد nvarchar و بعد فقط این رو نمایش میداد.
به نظرتون معایب این روش چیه؟

fakhravari
پنج شنبه 27 تیر 1398, 06:34 صبح
جناب فخرآوری مشکل استفاده از تریگر اینه که Locking جدول رو می بره بالا.

یه روشی هم که دیدم یه فردی انجام داده بود این بود که رکورد قبل از آپدیت و بعد از آپدیت رو در حالت html ذخیره می کرد تو یه فیلد nvarchar و بعد فقط این رو نمایش میداد.
به نظرتون معایب این روش چیه؟


این قدرم که فکر میکنین سرعت نمیگیره.

باید حتما کل دیتای Old داشته باشید. نمیشه به صورت رشته به هم چسبیده باشه.

hamid_hr
پنج شنبه 27 تیر 1398, 11:07 صبح
به نظر من cdc چون lock نمیکنه و نیاز به کدنویسی و تغییرات تو دیتابیس نداریم و مدیریتش سمت خود sql server هست
برای از کار افتادنش هم باید یکم نظارت رو بیشتر کنید و دسترسی ها رو محدود کنید و همه کاربران به قسما sysadmin دسترسی نداشته باشن