其他地方找到的:
sql2005中的備份要在sql2000中還原,首先在sql2005中還原,然後選擇兼容sql2000(80),備份後再在sql2000種還原。
用mdf和ldf來備份資料庫,首先要分離資料庫,右鍵備份資料庫-任務-分離,對資料庫分離,資料庫的readonly要為false。分離後,在sql的data目錄下找到要備份的mdf和ldf資料庫。
還原時選擇附加資料庫,選擇對應的mdf和ldf文件,附加即可。要判斷要附加的資料庫是否為只讀,如果是,要去掉只讀屬性。要附加的資料庫文件即mdf和ldf文件的安全設置中設置user用戶完全控制許可權,即為資料庫文件的屬性,設置成功後才可以附加。否則會抱錯,要附加的資料庫為只讀。
要導出資料庫腳本時,右鍵導出的資料庫-任務-生成腳本
以下是sql語句備份還原資料庫:
/*--備份資料庫
--鄒建 2003.10--*/
/*--調用示例
--備份當前資料庫
exec p_backupdb @bkpath='c:\',@bkfname='db_\DATE\_db.bak'
--差異備份當前資料庫
exec p_backupdb @bkpath='c:\',@bkfname='db_\DATE\_df.bak',@bktype='DF'
--備份當前資料庫日誌
exec p_backupdb @bkpath='c:\',@bkfname='db_\DATE\_log.bak',@bktype='LOG'
--*/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_backupdb]') and OBJECTPROPERTY(id, N'IsProcere') = 1)
drop procere [dbo].[p_backupdb]
GO
create proc p_backupdb
@dbname sysname='', --要備份的資料庫名稱,不指定則備份當前資料庫
@bkpath nvarchar(260)='', --備份文件的存放目錄,不指定則使用SQL默認的備份目錄
@bkfname nvarchar(260)='', --備份文件名,文件名中可以用\DBNAME\代表資料庫名,\DATE\代表日期,\TIME\代表時間
@bktype nvarchar(10)='DB', --備份類型:'DB'備份資料庫,'DF' 差異備份,'LOG' 日誌備份
@appendfile bit=1 --追加/覆蓋備份文件
as
declare @sql varchar(8000)
if isnull(@dbname,'')='' set @dbname=db_name()
if isnull(@bkpath,'')='' set @bkpath=dbo.f_getdbpath(null)
if isnull(@bkfname,'')='' set @bkfname='\DBNAME\_\DATE\_\TIME\.BAK'
set @bkfname=replace(replace(replace(@bkfname,'\DBNAME\',@dbname)
,'\DATE\',convert(varchar,getdate(),112))
,'\TIME\',replace(convert(varchar,getdate(),108),':',''))
set @sql='backup '+case @bktype when 'LOG' then 'log ' else 'database ' end +@dbname
+' to disk='''+@bkpath+@bkfname
+''' with '+case @bktype when 'DF' then 'DIFFERENTIAL,' else '' end
+case @appendfile when 1 then 'NOINIT' else 'INIT' end
print @sql
exec(@sql)
go
----------------------------------------------------------------------
/*--恢復資料庫
--鄒建 2003.10--*/
/*--調用示例
--完整恢復資料庫
exec p_RestoreDb @bkfile='c:\db_20031015_db.bak',@dbname='db'
--差異備份恢復
exec p_RestoreDb @bkfile='c:\db_20031015_db.bak',@dbname='db',@retype='DBNOR'
exec p_backupdb @bkfile='c:\db_20031015_df.bak',@dbname='db',@retype='DF'
--日誌備份恢復
exec p_RestoreDb @bkfile='c:\db_20031015_db.bak',@dbname='db',@retype='DBNOR'
exec p_backupdb @bkfile='c:\db_20031015_log.bak',@dbname='db',@retype='LOG'
--*/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_RestoreDb]') and OBJECTPROPERTY(id, N'IsProcere') = 1)
drop procere [dbo].[p_RestoreDb]
GO
create proc p_RestoreDb
@bkfile nvarchar(1000), --定義要恢復的備份文件名
@dbname sysname='', --定義恢復後的資料庫名,默認為備份的文件名
@dbpath nvarchar(260)='', --恢復後的資料庫存放目錄,不指定則為SQL的默認數據目錄
@retype nvarchar(10)='DB', --恢復類型:'DB'完事恢復資料庫,'DBNOR' 為差異恢復,日誌恢復進行完整恢復,'DF' 差異備份的恢復,'LOG' 日誌恢復
@filenumber int=1, --恢復的文件號
@overexist bit=1, --是否覆蓋已經存在的資料庫,僅@retype為
@killuser bit=1 --是否關閉用戶使用進程,僅@overexist=1時有效
as
declare @sql varchar(8000)
--得到恢復後的資料庫名
if isnull(@dbname,'')=''
select @sql=reverse(@bkfile)
,@sql=case when charindex('.',@sql)=0 then @sql
else substring(@sql,charindex('.',@sql)+1,1000) end
,@sql=case when charindex('\',@sql)=0 then @sql
else left(@sql,charindex('\',@sql)-1) end
,@dbname=reverse(@sql)
--得到恢復後的資料庫存放目錄
if isnull(@dbpath,'')='' set @dbpath=dbo.f_getdbpath('')
--生成資料庫恢復語句
set @sql='restore '+case @retype when 'LOG' then 'log ' else 'database ' end+@dbname
+' from disk='''+@bkfile+''''
+' with file='+cast(@filenumber as varchar)
+case when @overexist=1 and @retype in('DB','DBNOR') then ',replace' else '' end
+case @retype when 'DBNOR' then ',NORECOVERY' else ',RECOVERY' end
print @sql
--添加移動邏輯文件的處理
if @retype='DB' or @retype='DBNOR'
begin
--從備份文件中獲取邏輯文件名
declare @lfn nvarchar(128),@tp char(1),@i int
--創建臨時表,保存獲取的信息
create table #tb(ln nvarchar(128),pn nvarchar(260),tp char(1),fgn nvarchar(128),sz numeric(20,0),Msz numeric(20,0))
--從備份文件中獲取信息
insert into #tb exec('restore filelistonly from disk='''+@bkfile+'''')
declare #f cursor for select ln,tp from #tb
open #f
fetch next from #f into @lfn,@tp
set @i=0
while @@fetch_status=0
begin
select @sql=@sql+',move '''+@lfn+''' to '''+@dbpath+@dbname+cast(@i as varchar)
+case @tp when 'D' then '.mdf''' else '.ldf''' end
,@i=@i+1
fetch next from #f into @lfn,@tp
end
close #f
deallocate #f
end
--關閉用戶進程處理
if @overexist=1 and @killuser=1
begin
declare @spid varchar(20)
declare #spid cursor for
select spid=cast(spid as varchar(20)) from master..sysprocesses where dbid=db_id(@dbname)
open #spid
fetch next from #spid into @spid
while @@fetch_status=0
begin
exec('kill '+@spid)
fetch next from #spid into @spid
end
close #spid
deallocate #spid
end
--恢復資料庫
exec(@sql)
go
本文來自CSDN博客,轉載請標明出處:
Ⅱ 速達3000PRO重裝系統後將重裝前備份在U盤文件進行恢復,後綴BAK文件恢復後顯示「主資料庫不存在」
這個簡單,你打開資料庫的企業管理器,裡面會有你剛恢復的數據,當前應該是置疑狀態,做一下附加就可以了。附加的時候你的數據實體文件在速達安裝路徑下的DATA文件夾中。
Ⅲ mysql資料庫備份成功,再還原卻失敗,什麼原
mysql>mysqlmp -u root -p dbcurr> 20090219.sql; 上面這個是你寫的,-p後面是密碼還是資料庫的名字,如果是資料庫的名字,那麼你沒有指定備份到哪個目錄裡面自然報錯 舉例 mysql>mysqlmp -uroot -p密碼 dbcurr > /root/20090219.sql;
Ⅳ 資料庫備份不了,提示在文件.mdf文件上發生不可恢復的I/O錯誤,DACKUP DATABASE操作異常終止,怎麼處理
1、首先檢查資料庫是不是正常運行,狀態是不是正常。
Ⅳ 用友資料庫備份後,還原不到30%就報錯,無法還原怎麼辦啊
用友資料庫備份後會產生成兩個文件,一個UFDATA.BA_,另一個是UfErpAct.Lst,無法還原主要可能是UFDATA.BA_有問題,解決方法:
先解壓UFDATA.BA_,用友備份的UFDATA.BA_是經過壓縮的,好像是用7z壓縮的,不過可以用RAR解壓。如果連解壓都無法完成,估計沒什麼希望
如果可以順利解壓,那麼解開的文件是一個標準的SQL備份文件,如UFDATA.BAK,可以在企業管理器里直接進行還原操作,如果可以正常還原,那麼恭喜您,勝利再望了。
.如果可以進行還原,那麼就做下DBCC檢測一下資料庫,看有沒有錯誤,如果有錯誤就用DBCC進行修復 。
.如果不能正常還原,那就只能找數據恢復公司試試了,建議找北亞數據恢復中心進行恢復,他們做資料庫修復很在行。
Ⅵ mysql資料庫備份和還原
MySQL資料庫備份與還原
備份和恢復數據
生成SQL腳本
在控制台使用mysqlmp命令可以用來生成指定資料庫的腳本文本,但要注意,腳本文本中只包含資料庫的內容,而不會存在創建資料庫的語句!所以在恢復數據時,還需要自已手動創建一個資料庫之後再去恢復數據。
mysqlmp –u用戶名 –p密碼 資料庫名>生成的腳本文件路徑
現在可以在C盤下找到mydb1.sql文件了!
注意,mysqlmp命令是在Windows控制台下執行,無需登錄mysql!!!
執行SQL腳本
執行SQL腳本需要登錄mysql,然後進入指定資料庫,才可以執行SQL腳本!!!
執行SQL腳本不只是用來恢復資料庫,也可以在平時編寫SQL腳本,然後使用執行SQL 腳本來操作資料庫!大家都知道,在黑屏下編寫SQL語句時,就算發現了錯誤,可能也不能修改了。所以我建議大家使用腳本文件來編寫SQL代碼,然後執行之!
SOURCE C:\mydb1.sql
注意,在執行腳本時需要先行核查當前資料庫中的表是否與腳本文件中的語句有沖突!例如在腳本文件中存在create table a的語句,而當前資料庫中已經存在了a表,那麼就會出錯!
還可以通過下面的方式來執行腳本文件:
mysql -uroot -p123 mydb1<c:\mydb1.sql
mysql –u用戶名 –p密碼 資料庫<要執行腳本文件路徑
這種方式無需登錄mysql!
Ⅶ 12.5.4 for windows恢復12.5.0.3的備份時報錯,求救!
不是的,是通過操作界面窗口,先建資料庫,然後再恢復的,現在恢復後就出現那個提示,但手工聯機可以使用!請教!
Ⅷ 用XtraBackup備份時報錯又一個錯誤,這是什麼原因
如題。在xtrabackup的參數里好像沒有找到像innobackupex那樣指定備份某一個資料庫的參數。有人知道,是否可以指定只備份某一個庫?另外,因為xtrabackup不能備份表結構 e tid=998這個帖子,嘗試用innobackupex來做全備