高分求助关于SQL数据更新的问题!!

geleisi 2004-04-24 10:43:06
怎样才能知道一段插入程序执行过后,哪些数据表被更改过?SQL可不可以察看数据表的更新记录?
...全文
37 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2004-04-25
  • 打赏
  • 举报
回复

log explorer使用的一个问题

1)对数据库做了完全 差异 和日志备份
备份时选用了删除事务日志中不活动的条目
再用Log explorer打试图看日志时
提示No log recorders found that match the filter,would you like to view unfiltered data
选择yes 就看不到刚才的记录了


如果不选用了删除事务日志中不活动的条目
再用Log explorer打试图看日志时,就能看到原来的日志

2)修改了其中一个表中的部分数据,此时用Log explorer看日志,可以作日志恢复

3)然后恢复备份,(注意:恢复是断开log explorer与数据库的连接,或连接到其他数据上,
否则会出现数据库正在使用无法恢复)
恢复完后,再打开log explorer 提示No log recorders found that match the filter,would you like to view unfiltered data
选择yes 就看不到刚才在2中修改的日志记录,所以无法做恢复.
zjcxc 元老 2004-04-25
  • 打赏
  • 举报
回复
--方法1. 可以为每个表创建触发器,记录一下.


--记录操作的示例

--创建记录的日志表
create table t_log(
id int identity(1,1) primary key,
工作站名 nchar(30) not null default host_name(),
操作员 sysname DEFAULT SUSER_SNAME(),
操作时间 datetime default getdate(),
事件类型 nvarchar(30),
参数 int,
执行的语句 nvarchar(255))
go

--演示用的数据表
create table test(id int)
go

--记录操作的触发器
create trigger t_update on test
for insert,update,delete
as
insert t_log(事件类型,参数,执行的语句) exec('dbcc inputbuffer(@@spid)')
go

--初始化表
insert into test values(1)
go

update test set id=100
go

--显示记录情况
select * from t_log
go

--删除演示环境
drop table t_log,test
xiaoliaoyun 2004-04-25
  • 打赏
  • 举报
回复
你可以用SQL的事件探查器(企业管理器-》工具-》SQL 事件探查器)或者用LOG EXPLORER

关于LOG EXPLORER资料,可以搜索CSDN上的文章,下面是其中一篇
http://expert.csdn.net/Expert/topic/2647/2647476.xml?temp=.9323389
geleisi 2004-04-25
  • 打赏
  • 举报
回复
现在的难题是程序我看不到啊。能到只能一个一个表对照,才能知道哪些表被改动过了?
internetcsdn 2004-04-24
  • 打赏
  • 举报
回复
问题的难道在增加啊
andy81391394 2004-04-24
  • 打赏
  • 举报
回复
楼主可以自设标识自己检查啊
xiaoliaoyun 2004-04-24
  • 打赏
  • 举报
回复
那只能看你的具体程序了吧....
geleisi 2004-04-24
  • 打赏
  • 举报
回复
现在的问题是这个数据库里面有好多的表,当我执行一段插入程序后我想知道哪些表被更改了。不是更新了哪些数据。
internetcsdn 2004-04-24
  • 打赏
  • 举报
回复
当然id是标识字段才行
internetcsdn 2004-04-24
  • 打赏
  • 举报
回复
: JerryOne(云在飞_思飞) ( )

若该表有ID,则用select Max(ID) from 表
enslaver 2004-04-24
  • 打赏
  • 举报
回复
没有!
JerryOne 2004-04-24
  • 打赏
  • 举报
回复
1.若有触发器中select * from inserted
2.若该表有ID,则用select Max(ID) from 表
8992026 2004-04-24
  • 打赏
  • 举报
回复
没有

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧