各位高人,关于对数据库中记录进行操作后留下的痕迹的问题。

时间:2022-03-22 07:04:03
首先谢谢各位。
本人不擅SQL Server,请帮忙(数据库环境为SQL Server 2000,所有的设置均为默认SQL Server 2000配置。)。
今应校方要求,删除数据库students中部分记录,
采用的方式是:打开企业管理器,然后选中数据库Students下的表stdentsinfo,然后点击右键,用菜单命令“返回所有行”,然后在数据浏览窗口中,逐条删除了较早的一部分记录。
现在我的问题是:
1、在SQL Server中,其他人是否可以看到我执行的删除操作?
SQL Server 2000是否会记录下我的这些操作在什么日志文件中?
其他的操作(比如在浏览数据的同时对某个记录的值进行了改变)是否会有记录?
如果有对操作痕迹的记录,我怎么样可以看到这些操作痕迹的记录?怎么样可以删除这些操作痕迹的记录?
(学校除了点差错,要求删除一些记录,要求在应付上级的调查的时候不能留下任何把柄。当然上级可能会派数据库高人来调查。)
怎么做才可以不留一点痕迹?
2、是否可以恢复删除的那些记录?如果要恢复,过程复杂么?

关系小人饭碗的问题,请各位高人费心看看。
再次感谢。

12 个解决方案

#1


研究一下用觸器,你說的最適合用觸器了

#2


帮你up

#3


1.一般你对数据库的操作都在日志文件中有记载的,可以通过查看日志文件看用户的操作记录
2.如果要恢复的,建议你用LOG EXPLEROR这个软件很好用的

#4


Log Explorer

http://www.ttdown.com/SoftDown.asp?ID=14562
http://www.yiii.net/app/servlet/net.yiii.club.DownloadServlet?Information_Id=I00023471
解压缩密码 www.heibai.net

http://www.ttdown.com/softview_8647.htm


注册机产生的是注册码,是两个

用解压缩密码解开后,压缩包里也有一个注册机的
打开log explorer file=>attach log file->选择服务器和登陆方式->connect->
选择数据库->attach->左面对话框中browse->view log->就可以看到log记录了
想恢复的话: 右键log记录 undo transation->选择保存文件名和路径->然后打开该文件到查询分析器里执行
T-sql代码就可以了

例如 如果log是delete table where ...的话,生成的文件代码就是insert table ....
--------------------------------------------
用第三方工具

www.heibai.net

Log Explorer

http://www.ttdown.com/SoftDown.asp?ID=14562
http://www.yiii.net/app/servlet/net.yiii.club.DownloadServlet?Information_Id=I00023471
解压缩密码 www.heibai.net

http://www.ttdown.com/softview_8647.htm


注册机产生的是注册码,是两个

用解压缩密码解开后,压缩包里也有一个注册机的

打开log explorer file=>attach log file->选择服务器和登陆方式->connect->
选择数据库->attach->左面对话框中browse->view log->就可以看到log记录了
想恢复的话: 右键log记录 undo transation->选择保存文件名和路径->然后打开该文件到查询分析器里执行
T-sql代码就可以了

例如 如果log是delete table where ...的话,生成的文件代码就是insert table ....

#5


严重感谢各位。
现在还有一点小小问题请各位帮忙解惑:
1.一般你对数据库的操作都在日志文件中有记载的,可以通过查看日志文件看用户的操作记录
——在SQL Server 2000中,如何察看这些日志文件的内容??用企业管理器么?还是只能用第三方软件:Log Explorer ?SQL Server 2000 是否自带察看日志文件的什么工具?
你们都是数据库方面的高人,你们是否有习惯察看日志文件以确保数据库中数据的完整?如果是,是每天都看?还是每周检查?因为数据库可能有几个人有机会直接操作,而且库中中记录实在太多,如果不看日志文件,确实不知道是否有某个用户在某个我不在的时候对数据库执行了什么删除或者插入的操作。那么这种情况下,我应该怎么做?(分不够再加。)
2、再次感谢。

#6


3、清除日志是指清除该库全部的日志么?
   我是否可以只清除记录我执行删除操作的那几条日志信息?
   如果可以,怎么实现?
   SQL Server 2000自己带有什么小软件可以到达目的么?
   还是只能借助Log Explorer?
4、如果我想让我的删除操作或者修改数据的操作神不知鬼不觉,连日志都没有记录,
   我应该怎么做?
5、初次接触数据库,这些经验性质的问题只有请教各位高人了。谢谢。

#7


只能用第三方软件:Log Explorer 
SQL Server 2000 是没有自带察看日志文件的工具

你要恢复的话最好先做好备份。这样子不用这么麻烦。

日志其实并不是太重要的(只是在数据库出错的时候有点用。我用的sql一般不保存日志的--实在太大了),另外你可以打开事件探测器来跟踪那个用户对数据库进行过操作


#8


谢谢。
如果我浏览数据库中的表,是否也会有记录?
这些对SQL Server 2000的操作痕迹是否有记录?

#9


浏览数据库中的表,是没记录的

#10


无论用什么方法删除,SQL都会记录日志的


但是,你可以在删除后,清理日志,这样就查不出来了,删除后用下面的语句清理日志
backup log 库名 with no_log

#11


sql只对数据操作进行日志记录,浏览只是取数据,不会记录日志的.

#12


--删除数据后,最彻底的就是按下面的步骤操作,这样就肯定查不到任何日志记录了.


--下面的所有库名都指你要处理的数据库的库名

1.清空日志
DUMP  TRANSACTION  库名  WITH  NO_LOG    

2.截断事务日志:
BACKUP LOG 库名 WITH NO_LOG

3.收缩数据库文件(如果不压缩,数据库的文件不会减小
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件
--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了

也可以用SQL语句来完成
--收缩数据库
DBCC SHRINKDATABASE(库名)

--收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfiles
DBCC SHRINKFILE(1)

4.为了最大化的缩小日志文件(如果是sql 7.0,这步只能在查询分析器中进行)
a.分离数据库:
企业管理器--服务器--数据库--右键--分离数据库

b.在我的电脑中删除LOG文件

c.附加数据库:
企业管理器--服务器--数据库--右键--附加数据库

此法将生成新的LOG,大小只有500多K

或用代码: 
下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。

a.分离
EXEC sp_detach_db @dbname = '库名'

b.删除日志文件

c.再附加
EXEC sp_attach_single_file_db @dbname = '库名', 
   @physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\库名.mdf'

#1


研究一下用觸器,你說的最適合用觸器了

#2


帮你up

#3


1.一般你对数据库的操作都在日志文件中有记载的,可以通过查看日志文件看用户的操作记录
2.如果要恢复的,建议你用LOG EXPLEROR这个软件很好用的

#4


Log Explorer

http://www.ttdown.com/SoftDown.asp?ID=14562
http://www.yiii.net/app/servlet/net.yiii.club.DownloadServlet?Information_Id=I00023471
解压缩密码 www.heibai.net

http://www.ttdown.com/softview_8647.htm


注册机产生的是注册码,是两个

用解压缩密码解开后,压缩包里也有一个注册机的
打开log explorer file=>attach log file->选择服务器和登陆方式->connect->
选择数据库->attach->左面对话框中browse->view log->就可以看到log记录了
想恢复的话: 右键log记录 undo transation->选择保存文件名和路径->然后打开该文件到查询分析器里执行
T-sql代码就可以了

例如 如果log是delete table where ...的话,生成的文件代码就是insert table ....
--------------------------------------------
用第三方工具

www.heibai.net

Log Explorer

http://www.ttdown.com/SoftDown.asp?ID=14562
http://www.yiii.net/app/servlet/net.yiii.club.DownloadServlet?Information_Id=I00023471
解压缩密码 www.heibai.net

http://www.ttdown.com/softview_8647.htm


注册机产生的是注册码,是两个

用解压缩密码解开后,压缩包里也有一个注册机的

打开log explorer file=>attach log file->选择服务器和登陆方式->connect->
选择数据库->attach->左面对话框中browse->view log->就可以看到log记录了
想恢复的话: 右键log记录 undo transation->选择保存文件名和路径->然后打开该文件到查询分析器里执行
T-sql代码就可以了

例如 如果log是delete table where ...的话,生成的文件代码就是insert table ....

#5


严重感谢各位。
现在还有一点小小问题请各位帮忙解惑:
1.一般你对数据库的操作都在日志文件中有记载的,可以通过查看日志文件看用户的操作记录
——在SQL Server 2000中,如何察看这些日志文件的内容??用企业管理器么?还是只能用第三方软件:Log Explorer ?SQL Server 2000 是否自带察看日志文件的什么工具?
你们都是数据库方面的高人,你们是否有习惯察看日志文件以确保数据库中数据的完整?如果是,是每天都看?还是每周检查?因为数据库可能有几个人有机会直接操作,而且库中中记录实在太多,如果不看日志文件,确实不知道是否有某个用户在某个我不在的时候对数据库执行了什么删除或者插入的操作。那么这种情况下,我应该怎么做?(分不够再加。)
2、再次感谢。

#6


3、清除日志是指清除该库全部的日志么?
   我是否可以只清除记录我执行删除操作的那几条日志信息?
   如果可以,怎么实现?
   SQL Server 2000自己带有什么小软件可以到达目的么?
   还是只能借助Log Explorer?
4、如果我想让我的删除操作或者修改数据的操作神不知鬼不觉,连日志都没有记录,
   我应该怎么做?
5、初次接触数据库,这些经验性质的问题只有请教各位高人了。谢谢。

#7


只能用第三方软件:Log Explorer 
SQL Server 2000 是没有自带察看日志文件的工具

你要恢复的话最好先做好备份。这样子不用这么麻烦。

日志其实并不是太重要的(只是在数据库出错的时候有点用。我用的sql一般不保存日志的--实在太大了),另外你可以打开事件探测器来跟踪那个用户对数据库进行过操作


#8


谢谢。
如果我浏览数据库中的表,是否也会有记录?
这些对SQL Server 2000的操作痕迹是否有记录?

#9


浏览数据库中的表,是没记录的

#10


无论用什么方法删除,SQL都会记录日志的


但是,你可以在删除后,清理日志,这样就查不出来了,删除后用下面的语句清理日志
backup log 库名 with no_log

#11


sql只对数据操作进行日志记录,浏览只是取数据,不会记录日志的.

#12


--删除数据后,最彻底的就是按下面的步骤操作,这样就肯定查不到任何日志记录了.


--下面的所有库名都指你要处理的数据库的库名

1.清空日志
DUMP  TRANSACTION  库名  WITH  NO_LOG    

2.截断事务日志:
BACKUP LOG 库名 WITH NO_LOG

3.收缩数据库文件(如果不压缩,数据库的文件不会减小
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件
--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了

也可以用SQL语句来完成
--收缩数据库
DBCC SHRINKDATABASE(库名)

--收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfiles
DBCC SHRINKFILE(1)

4.为了最大化的缩小日志文件(如果是sql 7.0,这步只能在查询分析器中进行)
a.分离数据库:
企业管理器--服务器--数据库--右键--分离数据库

b.在我的电脑中删除LOG文件

c.附加数据库:
企业管理器--服务器--数据库--右键--附加数据库

此法将生成新的LOG,大小只有500多K

或用代码: 
下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。

a.分离
EXEC sp_detach_db @dbname = '库名'

b.删除日志文件

c.再附加
EXEC sp_attach_single_file_db @dbname = '库名', 
   @physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\库名.mdf'