跨平台备份sybase数据库

本文介绍了一种从Linux到Windows平台迁移数据库的方法,包括创建临时数据库、备份与恢复数据库,以及解决备份数据库打开问题的存储过程。通过执行特定步骤,确保数据库在不同平台间迁移时保持完整性和可用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 工作中,常要将linux的数据备份到windows下备用。

总结出一条最简洁路线。

如下:

一、在linux建一个临时数据库,单用户模式,sp_dboption XXdb,"single user",true

二、将要备份的库备份出来,dump database xx_db_bk to '备份路径'。

三、将备份库恢复到临时数据库中 load database xx_db_temp from '备份路径\xx_db_bk',并onlie database XX_db

四、将临时数据库备份出,并恢复到window数据库中。(以上步骤主要是因为跨平台操作,需要库是静态的)

五:依次执行以下语句:

use master

dbcc fix_text(spt_jtext)
dbcc checkdb("xx_database")(此步需要很长时间),有错误对话框可以无视,或者根据我的经验可以找到某张表重建约束索引。
dbcc checkalloc
sp_flushstats
use xx_database

sp_post_xpload(此步需要很长时间)

其实,经过以上

六、备份完的数据库,最大的问题是,很多大数据量表因为索引等破坏打不开。是sysstatistics表造成的原因。

跑以下存储过程:

 

create procedure appuser.stateDelete
/* [ (@param_name datatype [= default] [output] ), ... ] */
as
    declare cur_ins CURSOR for 
    select sysobjects.name from sysobjects where name like '%' and type='U'
    declare @tableName varchar(200)
    declare @sql varchar(255)
begin
    open cur_ins
    fetch cur_ins into @tableName
    while @@sqlstatus=0
        begin
	set @sql = 'DELETE 
FROM sysstatistics WHERE id IN
(SELECT id FROM sysobjects WHERE name = ' + char(39) +@tableName + char(39) +') go'
              print@sql

        fetch cur_ins into @tableName
        end
    close cur_ins
end

 

建立并执行如上存储过程,将打印出来的sql拷贝下来,执行一遍。

 

 

create procedure stateUpdate
/* [ (@param_name datatype [= default] [output] ), ... ] */
as
    declare cur_ins CURSOR for 
    select sysobjects.name from sysobjects where name like '%' and type='U'
    declare @tableName varchar(200)
    declare @sql varchar(255)
begin
    open cur_ins
    fetch cur_ins into @tableName
    while @@sqlstatus=0
        begin
	set @sql = 'update statistics  appuser.' + @tableName
              EXEC @sql

        fetch cur_ins into @tableName
        end
    close cur_ins
end

建立并执行如上存储过程,将打印出来的sql拷贝下来,执行一遍。


 

然后

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值