sybase的备份与恢复

    上班已经快半年了,这么长时间在公司也学了不少的东西。现在想把这些东西一点一点儿的都写下来。第一,是为了可以帮助更多的人来避免这样的问题。第二则是为了以后自己忘了,还是可以到这里再看看。
    sybase数据库,是我最近刚接触的。通过我的总结发现,备份它的整个库的数据和表结构以及表与表之间的关联。那么可以用dump命令。但是有时候,也会出现问题,比如我经常遇到的一个问题就是,如果你使用dump来备份数据的话,数据已经全部导出了,也可以再次导入,但是它一直会报一个错。但是如果你看到dump is complte.那就说明已经成功了。至于它所报的错,可以不理会。具体的命令如下:
  dump database dbname(数据库名)to 'c:\test\test.dump'
这样就可以把dbname这个数据库里的所有的数据,包括存储过程都会备份成test.dump这样一个文件。以后想要恢复的话。就使用下面的命令:
load database dbname(数据库名) from 'c:\test\test.dump'
但是这时候数据有可能已经进来了,但是还是会报错。那是因为数据库离线。
通过online database dbname(数据库名)来让这个数据库上线。这样就可以用了。

     如果你的表里有text类型的数据的话,你恢复之后,不仅仅要让数据库上线,还需要把这些text字段的表处理一下。要不然在你页面上访问这些数据的时候会出错。
DBCC FIX_TEXT('tablename')  表名
通过执行这句话,就可以让页面正常访问了。

  另外,如果你只是想备份一下数据库的数据,至于表结构和表与表之间的关系可以不考虑的话。那建议你使用bcp命令。具体的命令如下:
  bcp dbname..tablename out filename -Usa -P -Ssybser -c
其中dbname是数据库名 tablename是表名  -U是数据库的用户名。-P是密码。—S是数据库服务器名 -c是以常见文本输出。导入的时候,把out换成in即可。


   最后介绍一个只是备份整个库的数据不考虑表的结构等信息的话,可以用这个快捷的方式:
use performance(数据库名)
GO
select 'bcp performance..'+name+' out c:\temp\'+name+' -Usa -P123456 -Sdbserver -c ' from sysobjects where type='U'
GO
把上面这几条命令保存在一个你知道的地方,文件文档即可,在这里以bcpscript.txt为便。在这里以c盘要目录为例。
在命令行里,进行c盘要目录。然后执行 isql -Usa -P -Ssybser -i bcpscript.txt -o bcpout.bat

然后在c盘要目录下面就会有一个bcpout.bat的文件产生,然后你再运行这个批处理文件。在c:\temp\下面就会有以表名为名字的文件。这些就是你需要的数据了。
如果你需要导入的话,直接把out换成in即可。
不过这些方法都受到数据库版本的限制。目前测试,dump是肯定受限制了。
bcp的话,只要两个表的字段一样,是可以插入的。

第一次发这种技术的博客,如果有什么没有说清楚的。可以留言给我。

猜你喜欢

转载自hexinya1989618.iteye.com/blog/1540425