我继承了以下管理员查询并不时运行它,并完全理解它返回的内容:
--Loop until the Cursor was not able to fetch
WHILE (@@Fetch_Status >= 0)
BEGIN
--Dump the results of the sp_spaceused query to the temp table
INSERT #TempTable
EXEC sp_spaceused @TableName
--Get the next table name
FETCH NEXT FROM tableCursor INTO @TableName
END
--get rid of the Cursor
CLOSE tableCursor
DEALLOCATE tableCursor
--Select TABLE properties with SIZE -- Final step
SELECT name,
convert(date,create_date) as CreateDate,
convert(date,modify_date) as ModifyDate,
numberofRows,
dataSize
FROM sys.objects
join #temptable tm on
tm.tablename = sys.objects.name
WHERE type in ('U')
order by modify_date
GO
以下哪些字段?:
他们中的任何一个是否告诉我上次数据是DELETED
还是INSERTED
到表格中?
如果没有,那我该如何获得这些信息?
答案 0 :(得分:4)
BOL说什么
修改日期 - 使用ALTER修改上次修改对象的日期 声明。如果对象是表或视图,还可以使用modify_date 创建表或视图上的聚簇索引时更改或 改变。
所以有人添加了列或更改了表的模式
默认情况下,该信息(当有人插入/删除值时)未存储
如果您想要有人在表中插入值,您必须实现它
你可以在你的表中添加ChangeDate datetime
列并添加触发器,它会插入适当的值,但是当数据被删除时它不会保留
典型的是,如果要记录数据更改,可以通过创建与要记录的表类似的表来实现它,添加“DataChange,operation,user”等列 并为UPDATE,INSERT,DELETE
实现DML触发器或使用sql server更改数据来跟踪数据更改,但我个人从未使用过那个:)