it-swarm.dev

قائمة على آخر مرة تم تحديث الجدول

أرغب في استرداد آخر مرة تم فيها تحديث جدول (إدراج ، حذف ، تحديث).

جربت هذا الاستعلام.

SELECT last_user_update
FROM sys.dm_db_index_usage_stats
WHERE object_id=object_id('T')

لكن البيانات هناك ليست مستمرة عبر إعادة تشغيل الخدمة.

أريد الحفاظ على الإحصائيات حتى إذا تم إعادة تشغيل الخدمة. كيف يمكنني تحقيق ذلك؟

18
Ramesh Durai

إذا كنت تتحدث عن آخر مرة تم فيها تحديث الجدول من حيث هيكلته قد تغير (تم إضافة عمود جديد ، تم تغيير العمود إلخ) - استخدم هذا الاستعلام:

SELECT name, [modify_date] FROM sys.tables

إذا كنت تتحدث عن عمليات DML (إدراج ، تحديث ، حذف) ، فأنت بحاجة إما إلى الاستمرار في ما يمنحك DMV بشكل منتظم ، أو تحتاج إلى إنشاء مشغلات على جميع الجداول لتسجيل تاريخ "آخر تعديل" - أو تحقق من ميزات مثل تغيير التقاط البيانات في SQL Server 2008 وأحدث.

41
marc_s

إذا كنت تريد الاطلاع على تحديثات البيانات ، فيمكنك استخدام هذه التقنية مع الأذونات المطلوبة:

SELECT OBJECT_NAME(OBJECT_ID) AS DatabaseName, last_user_update,*
FROM sys.dm_db_index_usage_stats
WHERE database_id = DB_ID( 'DATABASE')
AND OBJECT_ID=OBJECT_ID('TABLE')
6
MERT DOĞAN

للاستمرار في مراجعة البيانات المتعلقة بتعديلات البيانات ، ستحتاج إلى تطبيق مشغل DML على كل جدول تهتم به. ستحتاج إلى إنشاء جدول تدوين ، وإضافة رمز إلى مشغلاتك للكتابة إلى هذا الجدول.

لمزيد من التفاصيل حول كيفية تطبيق مشغلات DML ، راجع مقالة MDSN http://msdn.Microsoft.com/en-us/library/ms191524٪28v=sql.105٪29. ASPX

2
Julian Joseph
SELECT so.name,so.modify_date

FROM sys.objects as so

INNER JOIN INFORMATION_SCHEMA.TABLES as ist

ON ist.TABLE_NAME=so.name where ist.TABLE_TYPE='BASE TABLE' AND 

TABLE_CATALOG='DbName' order by so.modify_date desc;

هذا هو مساعدة للحصول على تعديل الجدول مع اسم الجدول

1
Ambala Chandrashekar

العثور على آخر مرة من التحديث على طاولة

`SELECT
tbl.name
,ius.last_user_update
,ius.user_updates
,ius.last_user_seek
,ius.last_user_scan
,ius.last_user_lookup
,ius.user_seeks
,ius.user_scans
,ius.user_lookups
FROM
sys.dm_db_index_usage_stats ius INNER JOIN
sys.tables tbl ON (tbl.OBJECT_ID = ius.OBJECT_ID)
WHERE ius.database_id = DB_ID()
`

http://www.sqlserver-dba.com/2012/10/sql-server-find-last-time-of-update-on-a-table.html

0
Ayaat Shifa