CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

sql server 数据库基于时间点的恢复

楼主pbsql(风云)2006-07-27 13:25:43 在 MS-SQL Server / 基础类 提问

sql   server   数据库基于时间点的恢复 问题点数:300、回复次数:81Top

1 楼pbsql(风云)回复于 2006-07-27 13:25:59 得分 0

set   nocount   on  
  go  
   
  --准备数据库及备份文件  
   
  --1  
  if   exists(select   *   from   master..sysdatabases   where   name='dbtest')  
  drop   database   dbtest  
  go  
  --初始化时间  
  exec   master..xp_cmdshell   'date   07-27-06',no_output--2006-07-27  
  exec   master..xp_cmdshell   'time   12:00:00',no_output  
  waitfor   delay   '00:00:03'  
  go  
  --12:00:03建测试数据库,并备份该数据库  
  create   database   dbtest  
  go  
  backup   database   dbtest   to   disk='c:\dbtest.bak'   with   format    
  go  
   
  --2  
  --改时间  
  exec   master..xp_cmdshell   'date   07-27-06',no_output--2006-07-27  
  exec   master..xp_cmdshell   'time   12:01:00',no_output  
  waitfor   delay   '00:00:03'  
  go  
  --12:01:03建测试表,并添加3条数据  
  create   table   dbtest.dbo.t   (a   int)    
  go  
  insert   into   dbtest.dbo.t   (a)  
  select   1   union   all  
  select   2   union   all  
  select   3  
  go  
   
  --3  
  --改时间  
  exec   master..xp_cmdshell   'date   07-27-06',no_output--2006-07-27  
  exec   master..xp_cmdshell   'time   12:02:00',no_output  
  waitfor   delay   '00:00:03'  
  go  
  --12:02:03删除表中一条数据  
  delete   from   dbtest.dbo.t   where   a=2  
  go  
   
  --4  
  --改时间  
  exec   master..xp_cmdshell   'date   07-27-06',no_output--2006-07-27  
  exec   master..xp_cmdshell   'time   12:03:00',no_output  
  waitfor   delay   '00:00:03'  
  go  
  --12:03:03truncate表中的数据  
  truncate   table   dbtest.dbo.t  
  go  
   
  --5  
  --改时间  
  exec   master..xp_cmdshell   'date   07-27-06',no_output--2006-07-27  
  exec   master..xp_cmdshell   'time   12:04:00',no_output  
  waitfor   delay   '00:00:03'  
  go  
  --12:04:03备份数据库日志  
  backup   log   dbtest   to   disk='c:\dbtest_log.bak'   with   format  
  go  
  Top

2 楼pbsql(风云)回复于 2006-07-27 13:26:26 得分 0

--恢复数据库到时间点  
   
  --1  
  --恢复数据文件  
  restore   database   dbtest   from   disk='c:\dbtest.bak'   with   replace,norecovery  
  go  
  --恢复日志到2006-07-27   12:00:10  
  restore   log   dbtest   from   disk='c:\dbtest_log.bak'   with   recovery,stopat='2006-07-27   12:00:10'  
  go  
  if   exists(select   *   from   dbtest.dbo.sysobjects   where   xtype='U'   and   name='t')  
  select   'table   t   exist'  
  else  
  select   'table   t   not   exist'  
  go  
   
  --2  
  --恢复数据文件  
  restore   database   dbtest   from   disk='c:\dbtest.bak'   with   replace,norecovery  
  go  
  --恢复日志到2006-07-27   12:01:10  
  restore   log   dbtest   from   disk='c:\dbtest_log.bak'   with   recovery,stopat='2006-07-27   12:01:10'  
  go  
  select   *   from   dbtest.dbo.t  
  go  
   
  --3  
  --恢复数据文件  
  restore   database   dbtest   from   disk='c:\dbtest.bak'   with   replace,norecovery  
  go  
  --恢复日志到2006-07-27   12:02:10  
  restore   log   dbtest   from   disk='c:\dbtest_log.bak'   with   recovery,stopat='2006-07-27   12:02:10'  
  go  
  select   *   from   dbtest.dbo.t  
  go  
   
  --4  
  --恢复数据文件  
  restore   database   dbtest   from   disk='c:\dbtest.bak'   with   replace,norecovery  
  go  
  --恢复日志到2006-07-27   12:03:10  
  restore   log   dbtest   from   disk='c:\dbtest_log.bak'   with   recovery,stopat='2006-07-27   12:03:10'  
  go  
  select   *   from   dbtest.dbo.t  
  go  
  Top

3 楼pbsql(风云)回复于 2006-07-27 13:26:50 得分 0

结论:只要有数据库的备份文件和日志备份,数据库就可以恢复到任意时间点的状态,即使删除了表或truncate了数据也是可以恢复的Top

4 楼pbsql(风云)回复于 2006-07-27 13:27:12 得分 0

疑问:truncate   table   似乎并不是我们理解的那样不记录日志,它还是会记录到日志里的?Top

5 楼pbsql(风云)回复于 2006-07-27 13:27:42 得分 0

欢迎讨论!!!Top

6 楼pbsql(风云)回复于 2006-07-27 13:29:14 得分 0

沙发:)Top

7 楼LouisXIV(夜游神)回复于 2006-07-27 13:30:25 得分 5

Sub   Sofa   ;)Top

8 楼yangys(杨杨)回复于 2006-07-27 13:31:21 得分 5

严重关注Top

9 楼libin_ftsafe(子陌红尘(TS for Banking Card))回复于 2006-07-27 13:32:19 得分 5

:)Top

10 楼iamltd(妖)回复于 2006-07-27 13:32:27 得分 5

谁说的truncate   不记录日志了?  
   
  即使选择大容量日志模式,也只是create/alter   index,bcp等少量几个特别耗log的过程不会记录log。truncate都会被记录的Top

11 楼LouisXIV(夜游神)回复于 2006-07-27 13:34:57 得分 5

The   DELETE   statement   removes   rows   one   at   a   time   and   records   an   entry   in   the   transaction   log   for   each   deleted   row.   TRUNCATE   TABLE   removes   the   data   by   deallocating   the   data   pages   used   to   store   the   table's   data,   and   only   the   page   deallocations   are   recorded   in   the   transaction   log.Top

12 楼pbsql(风云)回复于 2006-07-27 13:35:47 得分 0

因为很多人说truncate   不记录日志,所以今天特别试了一下  
   
  create/alter   index不记录日志吗?我试一下Top

13 楼wangdehao(找找找(现在很幸福))回复于 2006-07-27 13:35:51 得分 5

DELETE   语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE   TABLE   通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。Top

14 楼libin_ftsafe(子陌红尘(TS for Banking Card))回复于 2006-07-27 13:36:35 得分 5

疑问:truncate   table   似乎并不是我们理解的那样不记录日志,它还是会记录到日志里的  
  -----------------------------------------------------------------------------------------------------------------------------  
  TRUNCATE   TABLE语句删除的记录不会被记录到日志中,之所以可以通过恢复到时间点的方式恢复,是因为虽然这些数据没有被日志所记录,但存在于最近一次的全备份中;这就是为什么如果没有备份数据库,则无法通过事务日志恢复被TRUNCATE   TABLE语句删除的数据的原因。Top

15 楼libin_ftsafe(子陌红尘(TS for Banking Card))回复于 2006-07-27 13:43:49 得分 5

理论上而言,在最近的一次全备份之后,到当前时刻为止的任意一个时间点的数据都可以通过备份文件以及日志恢复,因为备份文件是对备份时刻数据库的一个镜像,而日志记录这个镜像之后数据库的一切变动,TRUNCATE   TABLE操作在日志中记录了这个事件,但是这个事件的具体内容是不会被记录下来的,也就是说这个操作的记录是不详细的,不足以通过这个事务的逆向操作恢复被清除的数据。Top

16 楼libin_ftsafe(子陌红尘(TS for Banking Card))回复于 2006-07-27 13:46:01 得分 5

如果没有备份数据库,则无法通过事务日志将TRUNCATE   TABLE操作删除的数据恢复,即便是借助了Log   Explorer。Top

17 楼pbsql(风云)回复于 2006-07-27 13:47:12 得分 0

libin:数据备份是在建库后马上做的,那时表都不存在,之后的任何操作都是通过日志来恢复的  
   
  iamltd(妖):经测试,create   index一样可以通过日志恢复Top

18 楼pbsql(风云)回复于 2006-07-27 13:50:16 得分 0

我的理解:truncate   table是记录的删除数据的动作,至于删除了哪些数据并未记录到日志Top

19 楼libin_ftsafe(子陌红尘(TS for Banking Card))回复于 2006-07-27 14:00:05 得分 5

pbsql:如果不备份数据库,而直接借助Log   explorer提取日志的事务来回滚,试试,:)  
   
  不管你前一次全备份时数据库处于一个怎样的状态,通过日志恢复到时间点的操作流程肯定是这样:  
   
  1、利用全备份将数据库恢复到备份操作的时间点  
  2、利用事务日志,从备份时间点开始,顺序执行日志中记录的事务  
   
  这个过程是按照时间,顺序执行的,TRUNCATE   TABLE的操作在日志中记录的详细程度无关紧要;但是一个记录完整的事务,应该是可逆的,但是TRUNCATE   TABLE事务是不可逆的。  
   
  我所要描述的是:TRUNCATE   TABLE操作在日志中记录不详细,无法通过该事务逆操作来恢复数据;也就是说,如果没有做过全备份,想通过Log   explorer及事务日志来恢复TRUNCATE   TABLE操作清除的数据,是不可能的。Top

20 楼libin_ftsafe(子陌红尘(TS for Banking Card))回复于 2006-07-27 14:01:32 得分 5

我的理解:truncate   table是记录的删除数据的动作,至于删除了哪些数据并未记录到日志  
  -----------------------------------------------------------------------------------------------------------------------------------  
  I   agree.Top

21 楼wangtiecheng(不知不为过,不学就是错!)回复于 2006-07-27 14:05:49 得分 5

Me,too!Top

22 楼iamltd(妖)回复于 2006-07-27 14:34:40 得分 5

呵呵,相信也没有谁不从完整备份开始,直接用log还原数据吧?  
  太牛了。。。。Top

23 楼libin_ftsafe(子陌红尘(TS for Banking Card))回复于 2006-07-27 14:45:26 得分 5

有没做备份的:  
  --------------------------------------------------------------------------------------------------------------------------  
  在没有备份的情况下,如何将数据库还原到某一个时间点?    
  link:http://community.csdn.net/Expert/topic/4908/4908418.xml?temp=5.965823E-02Top

24 楼dragonbbc(dragon)回复于 2006-07-27 15:26:12 得分 5

学习学习Top

25 楼doublefish8133(米兰王朝)回复于 2006-07-27 15:30:15 得分 5

偶是菜鸟   学习学习!~Top

26 楼littlekeen(keen)回复于 2006-07-27 18:22:54 得分 5

markTop

27 楼seayar(习习)回复于 2006-07-27 18:26:51 得分 5

mark  
  Top

28 楼yjlhch(爱拼才会赢)回复于 2006-07-27 19:00:16 得分 5

学习Top

29 楼wjlsmail(小脖领)回复于 2006-07-27 19:05:07 得分 5

StudyTop

30 楼Haiwer(海阔天空)回复于 2006-07-28 09:32:24 得分 5

mark  
  Top

31 楼hymxtang(书童)回复于 2006-07-28 11:12:10 得分 5

学习&upTop

32 楼paoluo(一天到晚游泳的鱼)回复于 2006-07-28 11:14:40 得分 5

:)Top

33 楼pbsql(风云)回复于 2006-07-28 11:23:14 得分 0

发现对数据库的任何修改都会记录到日志的,只是记录的详细程度不同,但数据库的这个操作是记录了的,比如:truncate   table/alter   table/drop   table/create   index/...Top

34 楼cbo5()回复于 2006-07-28 16:08:26 得分 5

有备份就能还原,没备份就不能还原。  
   
  你们在讨论什么啊?Top

35 楼jwt1982(叛逆者)回复于 2006-07-29 07:47:43 得分 5

cbo5()    
  有备份就能还原,没备份就不能还原。  
   
  你们在讨论什么啊?  
   
  ==========================================  
   
  你不能每秒都做备份吧?  
   
  讨论的是基于日志恢复数据的问题。Top

36 楼zhenmeiyisi(。。。)回复于 2006-07-29 08:22:01 得分 5

学习;)Top

37 楼sxycgxj(云中客)回复于 2006-07-29 08:47:08 得分 5

风云,够狠  
  发了N贴后才想到坐沙发Top

38 楼sxycgxj(云中客)回复于 2006-07-29 08:55:00 得分 5

TRUNCATE   TABLE  
  删除表中的所有行,而不记录单个行删除操作。    
   
  是不是说,执行此语句后,只记录此次操作的一个标志,不记录详细信息  
  如果是这样,还是可以根据以前的日志恢复数据的  
  Top

39 楼sxycgxj(云中客)回复于 2006-07-29 08:56:40 得分 5

不过这样的恢复比较困难些Top

40 楼zjdyzwx(十一月猪)回复于 2006-07-29 08:56:56 得分 5

星星真多Top

41 楼Angly1018(#一*直¥在!)回复于 2006-07-29 09:50:21 得分 5

學習Top

42 楼pbsql(风云)回复于 2006-07-29 14:19:33 得分 0

这个恢复的原理应该是这样的:  
  假如12:00备份的数据文件,经过若干操作后又备份了日志,现在要恢复到12:03时的状态,实际上是先恢复数据文件,然后把12:00到12:03的日志执行一遍Top

43 楼hank212(IT民工)回复于 2006-07-29 14:33:36 得分 5

收藏Top

44 楼wj5104(wj)回复于 2006-07-29 14:43:08 得分 5

沒有使用過日志通過恢復  
  學習ing...Top

45 楼gaohaidong(高海东)回复于 2006-07-30 14:06:22 得分 5

数据库的备份和恢复     我也在学习Top

46 楼leimin(黄山光明顶)回复于 2006-07-30 15:19:35 得分 5

看完了大家的积极讨论,不错!  
   
  1.   我想说明一下,SQL   SERVER   2000的日志有2个概念:事务日志和操作日志,事务日志是保存在LDF文件中,操作日志是记录在LOG文件中(或TRACE文件).  
  2.   对应SQL   SERVER   2000是否记录TRUNCATE的操作,需要明确前提   SQL   SERVER运行在什么模式下,SQL   SERVER   2000有3中模式:简单,BULK/COPY,FULL.在简单模式下TRUNCATE是不记录在事务日志中,所以尼也是无法通过事务日志的恢复到指定的时间点.  
  3.   对于SQL   SERVER   7.0/6.5有不同的运行机制,我记得在SQL   SERVER   6.5中TRUNCATE   是不记录事务日志.(可能有误:-)).  
  Top

47 楼tangyong_delphi()回复于 2006-07-30 19:42:06 得分 5

谢谢Top

48 楼xyxfly(All things are difficult before they are easy.)回复于 2006-07-30 21:56:33 得分 4

呵呵,学习     :)Top

49 楼daisylh(麗達)回复于 2006-07-31 08:13:51 得分 4

繼續關注^__^Top

50 楼Haiwer(海阔天空)回复于 2006-07-31 08:18:20 得分 4

3.   对于SQL   SERVER   7.0/6.5有不同的运行机制,我记得在SQL   SERVER   6.5中TRUNCATE   是不记录事务日志.(可能有误:-)).  
   
  6.5帮助是说不记录事务日志的,但是没有进行过测试  
  Top

51 楼being21(民谣)回复于 2006-07-31 08:19:03 得分 4

Study!!!UP!!!Top

52 楼aw511(点点星灯)回复于 2006-07-31 08:32:26 得分 4

学习  
   
  :)Top

53 楼zsforever(虎虎)回复于 2006-07-31 09:05:04 得分 4

学习Top

54 楼netcup(茶杯)回复于 2006-07-31 09:07:38 得分 4

佩服,已经研究到底层了.Top

55 楼bflovesnow()回复于 2006-07-31 09:43:04 得分 4

从楼主的实验中似乎并没有看出   时间点恢复   和   truncate   的关系。  
   
  就是一次普通的   restore   ...   stopat   的实验  
   
  truncate   之前的数据当然可以通过日志文件恢复,有什么问题了吗?  
   
  truncate   不记录日志,但   insert   这些记录日志的操作就可以帮助恢复阿.Top

56 楼fcuandy(了此残生.)回复于 2006-07-31 09:44:40 得分 4

路过Top

57 楼beijingbeerman(啤酒肚)回复于 2006-08-01 06:48:24 得分 4

关注Top

58 楼yingyys(鹰)回复于 2006-08-01 08:46:07 得分 4

学习一下Top

59 楼prcgolf(小鸟)回复于 2006-08-01 10:03:33 得分 4

upTop

60 楼yanguangyun(my_21sj)回复于 2006-08-01 11:44:59 得分 4

同意bflovesnow()   的说法:  
  truncate   table   删除数据后,如要恢复到执行之前的时间点上,和truncate   table   并没有任何关系啊.因为恢复的原则是先将数据恢复到一个备份点上,然后在用log文件重新执行各类操作,与truncate   table   并没有任何关系吧.Top

61 楼pbsql(风云)回复于 2006-08-01 15:17:40 得分 0

1.   我想说明一下,SQL   SERVER   2000的日志有2个概念:事务日志和操作日志,事务日志是保存在LDF文件中,操作日志是记录在LOG文件中(或TRACE文件).  
   
   
  leimin(黄山光明顶):  
  这里的LOG是指的扩展名吗?但并没有看到该文件啊Top

62 楼ypnet(高原)回复于 2006-08-01 21:21:42 得分 4

study     :)Top

63 楼jacky_majia_001()回复于 2006-08-02 08:26:24 得分 4

学习Top

64 楼abc_sk()回复于 2006-08-02 09:09:38 得分 4

TRUNCATE   TABLE   比   DELETE   速度快,且使用的系统和事务日志资源少。    
   
  DELETE   语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE   TABLE   通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。  
   
  TRUNCATE   TABLE   删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用   DELETE。如果要删除表定义及其数据,请使用   DROP   TABLE   语句。  
   
  Top

65 楼Carol_zyr()回复于 2006-08-02 10:41:55 得分 4

学习Top

66 楼turenjie(拉倒)回复于 2006-08-02 11:10:36 得分 4

真是高手如云,学习中。。。。。。。Top

67 楼joyceanne(SQL桥)回复于 2006-08-02 11:40:31 得分 4

我举个例子,可能很少人会这样做.  
  每天都有做数据库的完整备份(重写到现有媒体)同时每天再做三次日志备份(每次备份的备份文件名都不一样),这样照理说,只要数据库软件出现问题我都能急时恢复数据库.  
  我的问题来了.怎么利用完整备份文件和所有日志的备份文件,将数据恢复到前一天或才上一个某个时间点.  
  总而言之就是不恢复到当前的时间点,而是恢复到完整备份之前的某个时间点.  
   
  (我自己还没测试过)  
  谁能说说具体做法.Top

68 楼hanchi8008(寒池)回复于 2006-08-02 11:48:35 得分 4

mark!Top

69 楼pbsql(风云)回复于 2006-08-03 11:09:59 得分 0

joyceanne(SQL桥):你读完前面的内容就明白了Top

70 楼leimin(黄山光明顶)回复于 2006-08-05 21:50:42 得分 4

Hello   pbsql(风云)  
   
  1.   sql   server   的一般系统日志,是保存在sql   server的默认安装路径下的LOG目录下,ERRORLOG.5   并且没有扩展名,系统默认是保存6个文件,你可以在企业管理器中更改这个文件的个数.   这个目录还保存着AGENT,复制操作的系统日志,如果你启动了相关的服务.  
   
  2.   SQL   SERVER还有一个重要的操作日子,是c2   audit   mode,  
      可以通过:  
        use   master  
   
        EXEC   sp_configure   'c2   audit   mode',   '1'  
     
        RECONFIGURE  
        go  
         
        进行配置,注意:这个参数设置后,必须重新启动SQLSERVER服务才生效.  
   
  这样你久可以在sql   server的默认安装路径下的DATA目录,找到相应的日志文件,比如:audittrace_20060805213142.trc   .  
   
  要实现完整的C2级安全保证,Windows操作系统也必须提供相应的支持)启用C2审核模式并重新启动之后,SQL   Server自动在\MSSQL\Data目录下面创建跟踪文件。我们可以使用SQL   Server   Profiler查看这些监视服务器活动的跟踪文件。    
   
  SQL   Server以128KB大小的块为单位把数据写入跟踪文件。因此,当SQL   Server非正常停止时,我们最多可能丢失128   KB的日志数据。可以想象,包含审核信息的日志文件将以很快的速度增大。例如,某次试验只访问了三个表,跟踪文件已经超过了1MB。当跟踪文件超过200MB时,C2审核将关闭旧文件并创建新文件。每次SQL   Server启动的时候,它会创建一个新的跟踪文件。如果磁盘空间不足,SQL   Server将停止运行,直至我们为审核日志释放出足够的磁盘空间并重新启动SQL   Server实例。在SQL   Server启动的时候,我们可以使用-f参数禁用审核。    
  Top

71 楼pbsql(风云)回复于 2006-08-08 00:03:45 得分 0

谢谢leimin(黄山光明顶),回头看看Top

72 楼libin_ftsafe(子陌红尘(TS for Banking Card))回复于 2006-08-08 08:57:46 得分 4

:)Top

73 楼mustudent(小生--蚕豆;恆久忍耐!)回复于 2006-08-08 09:32:18 得分 4

绑定,学习。Top

74 楼LZGUI(威靈)回复于 2006-08-08 10:46:18 得分 4

MARKTop

75 楼doublefish8133(米兰王朝)回复于 2006-08-08 11:33:36 得分 4

顶了再看:)Top

76 楼pbsql(风云)回复于 2006-08-08 22:50:34 得分 0

1.   sql   server   的一般系统日志,是保存在sql   server的默认安装路径下的LOG目录下,ERRORLOG.5   并且没有扩展名,系统默认是保存6个文件,你可以在企业管理器中更改这个文件的个数.   这个目录还保存着AGENT,复制操作的系统日志,如果你启动了相关的服务.  
  -------------------------------------------------  
  这里提到的那几个文件其实就是在企业管理器中看到的SQL   Server   Logs,是系统级的,并不是上面所说的表的操作日志  
   
   
  1.   我想说明一下,SQL   SERVER   2000的日志有2个概念:事务日志和操作日志,事务日志是保存在LDF文件中,操作日志是记录在LOG文件中(或TRACE文件).  
  --------------------------------------------------  
  我觉得这里所说的truncate   table/drop   table...等操作应该都是记录在数据库的日志文件中的(.ldf)而不是LOG文件中,因为只有这样才可能根据备份的日志重新执行对表或数据库的操作Top

77 楼prcgolf(小鸟)回复于 2006-08-14 11:50:12 得分 4

UPTop

78 楼achongsky(灵魂)回复于 2006-08-21 13:57:26 得分 4

MarkTop

79 楼xwqjamky(陌上烟花)回复于 2006-12-27 23:30:42 得分 4

学习Top

80 楼lovcal(枫兮)回复于 2006-12-28 08:06:10 得分 4

多谢:)Top

81 楼yikeshu_888(一棵树)回复于 2006-12-28 13:50:01 得分 4

markTop

相关问题

关键词

得分解答快速导航

  • 帖主:pbsql
  • LouisXIV
  • yangys
  • libin_ftsafe
  • iamltd
  • LouisXIV
  • wangdehao
  • libin_ftsafe
  • libin_ftsafe
  • libin_ftsafe
  • libin_ftsafe
  • libin_ftsafe
  • wangtiecheng
  • iamltd
  • libin_ftsafe
  • dragonbbc
  • doublefish8133
  • littlekeen
  • seayar
  • yjlhch
  • wjlsmail
  • Haiwer
  • hymxtang
  • paoluo
  • cbo5
  • jwt1982
  • zhenmeiyisi
  • sxycgxj
  • sxycgxj
  • sxycgxj
  • zjdyzwx
  • Angly1018
  • hank212
  • wj5104
  • gaohaidong
  • leimin
  • tangyong_delphi
  • xyxfly
  • daisylh
  • Haiwer
  • being21
  • aw511
  • zsforever
  • netcup
  • bflovesnow
  • fcuandy
  • beijingbeerman
  • yingyys
  • prcgolf
  • yanguangyun
  • ypnet
  • jacky_majia_001
  • abc_sk
  • Carol_zyr
  • turenjie
  • joyceanne
  • hanchi8008
  • leimin
  • libin_ftsafe
  • mustudent
  • LZGUI
  • doublefish8133
  • prcgolf
  • achongsky
  • xwqjamky
  • lovcal
  • yikeshu_888

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo