it-swarm.asia

متى تم إدراج البيانات / تحديثها / حذفها آخر مرة في جدول؟

لقد وجدت هذا الحل ، ولكن يتم فقدان هذه المعلومات في كل مرة يتم فيها إعادة تشغيل خدمة SQL Server ، أو بعبارة أخرى ، لا تكون مستمرة.

هل هناك طريقة أخرى لمعرفة متى تم تحديث الجدول آخر مرة حتى إذا تم إيقاف تشغيل الخادم بعد وقوعه؟

7
ivanmp

إذا كانت البيانات في الحل الآخر مقبولة بالنسبة لك ، فيمكنك ببساطة تجميع مجموعة البيانات الخاصة بك لجعلها مستمرة. على سبيل المثال ، قم بإنشاء جدول لتخزين object_id وآخر بحث/مسح/تحديث. كل n دقيقة ، خذ لقطة من DMV. ثم تحقق من الحد الأقصى في اللقطة ، وإذا كان أكبر من الحد الأقصى في مجموعة التحديثات ، فقم بتحديث مجموعة التحديثات. يمكنك الاحتفاظ باللقطات كمحفوظات أو يمكنك تنظيفها بمرور الوقت بمجرد دمجها.

6
Aaron Bertrand

إذا كان لديك حق الوصول إلى إصدار SQL Server Enterprise ، فراجع تغيير التعقب . هذا حل معقد للغاية. في النهاية ، قد يكون من الأسهل إضافة عمود LastUpdated ، كما هو مقترح بالفعل.

3
Dean Goodman

أود أن أشير أيضًا إلى أنك ستحصل على متوسط ​​أفضل إما عن طريق إنشاء جدول سجل (الذي يتتبع عمليات الإدخال/الحذف/التحديثات) أو إضافة علامات مع تواريخ إلى سجلاتك (والتي ستكلف بعض مساحة القرص الإضافية لكل سجل).

في كلتا الحالتين ، لا يتتبع SQL Server هذا بشكل افتراضي لأنه سيكلف تكلفة DB عالية المعاملات

3
Jakub

قد يكون هذا مفيدًا لك:

SELECT OBJECT_NAME(OBJECT_ID) AS DatabaseName, 
    last_user_update, *
FROM sys.dm_db_index_usage_stats
WHERE database_id = DB_ID( 'Database Name');
0
Aslam Khan