還原資料庫
什麼資料庫?備份文件切個圖?
我來看看
B. 如何還原sql資料庫
1、要進行還原資料庫操作我們先需要有一個資料庫,這里直接打開SQL Server Management Studio,然後打開實例,在左側按照下圖中紅色箭頭指示右鍵點擊資料庫,然後點擊 新建資料庫,如下圖:
C. 資料庫如何還原和備份
選擇需要備份的資料庫,右鍵--任務--還原。
如何備份與還原資料庫
如圖點擊添加,選擇我們需要備份到哪裡。
如何備份與還原資料庫
如下圖選擇好路徑後,給備份文件命名。
如何備份與還原資料庫
如何備份與還原資料庫
依次點擊確定,完成以後會提示還原成功。
如何備份與還原資料庫
可以把剛剛那邊備份文件還原到原來的資料庫,也可以還原給一個新的空的資料庫。假設我們還原一個新的資料庫。如圖依次展開
如何備份與還原資料庫
勾上選擇源設備--選擇路徑。
如何備份與還原資料庫
通過添加--找到剛剛我們備份的那個文件。
如何備份與還原資料庫
如何備份與還原資料庫
依次點擊確定後,回到還原資料庫界面,勾上還原文件。
如何備份與還原資料庫
在還原資料庫選項中點擊選項,找到我們這個新建的數據的文件和日誌存放路徑。(如果不知道,可以選中該資料庫--屬性--文件裡面找到默認路徑),勾上覆蓋原有資料庫。確定就OK了。
如何備份與還原資料庫
D. 。資料庫附加和還原有什麼區別在線等!
還原資料庫是指在原資料庫的備份情況下去還原,還原到之前的一個備份點,備份時間後的數據將不再存在
附加是指在一個資料庫的基礎上附加一個(其他硬碟或者伺服器上的)資料庫,建議不會用時先備份好,這個還原是兩個概念
簡單地解釋就是 不如sql在這個這個電腦,資料庫文件在另一台上,就可以用附加,這樣sql程序和數據文件是分開的,平時都是在同一台電腦上,最多不同分區,附加可以是不同硬碟或者伺服器,還可以是 這個數據是id 表 另一個sql是內容,,或者不同時期的內容,比如今年要增加一台新的伺服器所sql,把新的數據放在新的sql 舊的sql數據 就可以用附加的方式
E. 如何恢復資料庫
可是提交到伺服器之後,一切顯地都無比陌生。因為不熟悉SQL,准確來說就只會點Select,Update,Delete,Insert而已。昨天不小心誤刪了一張數據不多但是不在人工處理范圍內的一張表內的數據。因為知道SQL Server是有日誌這種東西的,事後我表現地無比淡定,在事發一個小時以內。一個小時之後,我發現我無法掌控這一事件了。上網查找了恢復數據的辦法。有必要啰嗦一下。 問題1:無論是遠程端還是伺服器端,都無法對資料庫(假設資料庫叫Test)進行除『增刪查改』的其它操作,譬如分離,離線,還原...錯誤提示是e.g.1 「無法分離 Test 資料庫 因為它當前正在使用。」e.g.2 「因為資料庫正在使用,未獲得對數據的排他訪問權,操作異常終止」反正嘛,就是說你丫不能阻止別人的訪問。可我們就是要這樣做的...只好跟它說拜拜了。 說拜拜的方法就是關掉所有訪問資料庫Test的進程。createproc killspid (@dbnamevarchar(20)) asbegindeclare@sqlnvarchar(500) declare@spidintset@sql='declare getspid cursor for select spid from sysprocesses where dbid=db_id('''+@dbname+''')'exec(@sql) open getspid fetchnextfrom getspid into@spidwhile@@fetch_status<>-1beginexec('kill '+@spid) fetchnextfrom getspid into@spidendclose getspid deallocate getspid end--用法use master exec killspid '資料庫名'PS:代碼我是這樣理解的,定義一段殺死訪問資料庫進程的存儲過程。寫一段獲取進程ID的代碼,循環殺死每一個進程。最後調用存儲過程。雖然不了解存儲過程,但是意思就是這樣的吧。 問題2:沒有備份資料庫,那該如何恢復數據呢有個軟體叫做Log Explorer 這個東西可以根據資料庫的日誌回到過去的任何一個時刻。View Code Log Explorer for SQL Server 是個好東西,但是這根本無法解決我的問題。資料庫在伺服器端,學校根本不會讓我安裝一個軟體在伺服器上面。而且我證實過,這個軟體必須要在伺服器端裝伺服器端軟體的。所以,這個對於我來說,是泡湯的。但是不代表這不是一個利器。 最後我用了一個很蛋疼的方法解決了。1.分離資料庫,備份一個Test;2.將資料庫附加回去,用自帶的恢復方式恢復到一個很久以前的狀態;3.將需要的那張表復制到備份的那個資料庫;4.將備份的那個資料庫掛回去,原資料庫刪了。 這是一個很蛋疼而且碰巧那張表沒被改的方法。頭一次知道DBA的重要性。我的方法是一個很偶然的東西,希望大家分享一下真正能解決恢復問題的辦法。當然,每隔一段時間備份是絕對沒有錯的。 方法 另外發現一個比較有技術性的可行的方法 1,如果誤操作之前存在一個全庫備份(或已有多個差異備份或增量備份),首先要做的事就是進進行一次日誌備份 (如果為了不讓日誌文件變大而置trunc. log on chkpt.選項為1那你就死翹了)backuplog dbName todisk='fileName'----注意:是日誌備份! 2,恢復一個全庫備份,注意需要使用with norecovery,如果還有其他差異或增量備份,則逐個恢復 restoredatabase dbName fromdisk='fileName'with norecovery 3,恢復最後一個日誌備份即剛做的日誌備份,指定恢復時間點到誤操作之前的時刻 restorelog dbName fromdisk='fileName'with stopat='date_time' 完整代碼View Code 經過驗證,這才叫有技術性!我那純屬「鄧艾的屯『田』」小孩子過家家。。。
F. SQL資料庫如何還原
把資料庫的備份文件放到伺服器的任意目錄下先, 然後按下面的步驟做。
如何從備份設備還原備份(企業管理器) ,從備份設備還原備份 。
展開伺服器組,然後展開伺服器。
展開"資料庫"文件夾,右擊資料庫,指向"所有任務"子菜單,然後單擊"還原資料庫"命令。
在"還原為資料庫"框中,如果要還原的資料庫名稱與顯示的默認資料庫名稱不同,請在其中進行輸入或選擇。
若要用新名稱還原資料庫,請輸入新的資料庫名稱。
說明 為資料庫指定新名稱將自動為從資料庫備份中還原的資料庫文件指定新名稱。
單擊"從設備",然後單擊"選擇設備"。
在"還原自"下,單擊"磁帶"或"磁碟",然後選擇還原設備。
如果沒有出現設備,則單擊"添加"以添加現有的備份設備或創建新的備份設備。
在"還原資料庫"對話框內,單擊"查看內容"並選擇要還原的備份集。
說明 此選項將掃描備份集以獲得備份內容信息,該操作可能需要花費較長時間,特別是在使用磁帶設備時。
如果已經知道要還原的備份集,則在"備份號"中輸入備份集編號。
在"還原備份集"下執行下列操作之一: 單擊"資料庫 — 完全"還原資料庫備份。
單擊"資料庫 — 差異"還原差異資料庫備份。
單擊"事務日誌"應用事務日誌備份。
G. sql server 怎麼還原資料庫
一、SQL 還原資料庫
1、選擇您要還原的資料庫「Dsideal_school_db」,點擊滑鼠右鍵 → 任務 → 還原 → 資料庫
2、在出現的「還原資料庫 — school_web_db」對話框中選擇「源設備」,然後點擊後面的「…」按鈕
3、在出現的「指定備份」對話框中,點擊「添加」按鈕
4、找到資料庫備份的路徑,選擇您所要還原的資料庫「Dsideal_school_db」(注意:文件類型選擇所有文件),然後連續「兩次」點擊「確定」按鈕
5、在出現的「還原資料庫 — Dsideal_school_db」對話框中,勾選上「選擇用戶還原的備份集」下的資料庫前的復選框
6、然後選擇「選項」,勾選上「覆蓋現有資料庫」
二、還原資料庫問題解決方案
在還原資料庫「Dsideal_school_db」時,有時會遇見的問題「因為資料庫正在使用,所以無法獲得對資料庫的獨占訪問權」,此時可以按照以下步驟解決此問題
1、右鍵資料庫「Dsideal_school_db」,然後選擇「屬性」
2、在出現的「資料庫屬性 — Dsideal_school_db 」對話框中,選擇「選項」,在「其他選項」下的「狀態」中找到「限制訪問」。選擇「SINGLE_USER」,點擊「確定」按鈕
3、按照正常還原資料庫的步驟,還原資料庫。
H. 還原SQL資料庫部分表
可以先新建資料庫實例,建立相同名稱資料庫,再恢復到新實例,然後使用跨資料庫復制:
sql 跨伺服器復制分類:默認欄目
為了安全,經常要使用上雙伺服器,在雙地區進行備份,以防止數據出錯。有時我們要恢復部分表的數據,這時就需要利用sql的跨資料庫的復制(當然可以利用程序轉換)如何跨資料庫復制一下例子可供參考。
select * from OPENDATASOURCE('SQLOLEDB','Data Source=10.0.128.106;User ID=sa;Password=as').backservers.dbo.[usys-hotel]
create table #temptable (Id varchar(50),Status varchar(50),num numeric(18,0) identity not null)
insert into #temptable select Id,Status from OPENDATASOURCE('SQLOLEDB','Data Source=10.0.128.106;User ID=sa;Password=as').backservers.dbo.[usys-hotel]
select * from #temptable
delete from #temptable
declare @i int
declare @Status varchar(50)
declare @Id varchar(50)
set @i=106
while @i<210
begin
select @i=@i 1
select @status=status from #temptable where num=@i
select @id=id from #temptable where num=@i
update [usys-hotel-info] set status=@status where id=@id
end
另外還有些方法沒有用過:
先使用聯結伺服器:
EXEC sp_addlinkedserver '別名','','MSDASQL',NULL,NULL,'DRIVER={SQL Server};SERVER=遠程名;UID=用戶;PWD=密碼;'
exec sp_addlinkedsrvlogin @rmtsrvname='別名',@useself='false',@locallogin='sa',@rmtuser='sa',@rmtpassword='密碼'
GO
然後你就可以如下:
select * from 別名.庫名.dbo.表名
insert 庫名.dbo.表名 select * from 別名.庫名.dbo.表名
select * into 庫名.dbo.新表名 from 別名.庫名.dbo.表名
go