sql備傷
SQL語句里有.
備份
backupdatabase[資料庫名]todisk=[磁碟路徑]
例如
backupdatabasedatatodisk='D:\1.bak'
恢復
restoredatabase[資料庫名]fromdisk=[磁碟路徑]
例如
restoredatabasedatafromdisk='D:\1.bak'
createPROCEDUREGY_DBBak
@bakequipint,--備份設備:磁碟&磁帶
@bakpathvarchar(50),--帶全路徑的備份文件名
@baktypeint,--完全備份&增量備份
@baklogint,--『0』備份日誌
@bakdbint,--『0』備份資料庫
@kindvarchar(7),--備份還是恢復
@retmsgvarchar(20)output--返回信息
AS
DECLARE@DevName_datavarchar(50)
DECLARE@DevName_logvarchar(50)
declare@db_pathvarchar(100)
declare@log_pathvarchar(100)
DECLARE@RCINT
SELECT@db_path=@bakpath+'.dat'
SELECT@log_path=@bakpath+'log.dat'
SELECT@RC=0
DBCCCHECKDB(Northwind)
/***********************************************************
**CREATEBACKUPANDRESTOREDEVICES
************************************************************/
IF@RC=0
BEGIN
EXECsp_admpdevice'disk',@DevName_data,@db_path
execsp_admpdevice'disk',@DevName_log,@log_path
select@rc=@@error
IF@RC<>0
begin
EXECSP_DropDevice@Devname_data
execsp_dropdevice@devname_log
SELECT@RC=-1000
return@rc
end
END
IF@kind='backup'
BEGIN
IF@bakequip=0
BEGIN
IF@baktype=0
BEGIN
IF@bakdb=0
BEGIN
BACKUPDATABASENorthwindTODISK=@Devname_data
WITHINIT
END
IF@baklog=0
BEGIN
BACKUPLOGNorthwindWITHNO_LOG
BACKUPLOGNorthwindTODISK=@DevName_log
WITHINIT,NO_TRUNCATE
END
END
ELSEBEGIN
IF@bakdb=0
BEGIN
BACKUPDATABASENorthwindTODISK=@DevName_data
WITHNOINIT
END
IF@baklog=0
BEGIN
BACKUPLOGNorthwindWITHNO_LOG
BACKUPLOGNorthwindTODISK=@DevName_log
WITHNOINIT,NO_TRUNCATE
END
END
END
SELECT@retmsg='資料庫備份成功!'
END
IF@kind='restore'
BEGIN
=@DevName_dataWITHREPLACE
SELECT@retmsg='恢復資料庫成功!'
END
RETURN0
② sql 2008如何數據時時備傷到別一台電腦
SQL Server 2008資料庫同步備份是通過發布/訂閱的機制進行多台伺服器之間的數據同步。
這里的復制原理是:基於快照的事務復制。主資料庫伺服器生成快照,備份庫伺服器讀取並載入該快照,然後不停地從主資料庫伺服器復制事務日誌。
這樣的方法同樣的在Oracle里使用,類似OGG的機制。
③ SQL資料庫怎麼備份
資料庫備份有4中類型,完全備份,差異備份,事務日誌備份,文件備份。
日常用到的主要是前兩種。
完全備份:是對整個資料庫進行備份,包括所有的數據及結構。
差異備份:又叫增量備份,是相對上一次完全備份而言的,記錄最近一次完全備份後所發生的變化。恢最好是每周一次完全備份,每天一次差異備份.完全備份後收縮事務日誌節省空間。
④ sql 2008如何時時備傷到別一台電腦
時時備份,可以使用鏡像或是日誌傳送。如果是2012及以上,還可以使用always on。
⑤ 【求助】SQL如何備份資料庫
備份資料庫
1)、開始菜單——程序——Microsoft SQL Server——企業管理器
2)、展開控制台根目錄下的數據,一直展開至資料庫名為???時,選擇???資料庫,右鍵——選擇所有任務——備份資料庫彈出「數據備份」窗口,選擇:「添加」指定備份路徑如果在之前有指定過路徑,請先刪除後再添加,一直點確定OK
⑥ SQL 2000 資料庫備份文件損壞如何修復
如果你的備份文件損壞了,那就不能恢復這個備份了,如果是你的資料庫文件.MDF損壞了,那你可以把原來的資料庫分離了,把資料庫文件先考到別的目錄下,然後在企業管理器里新建立個資料庫和原來的名字一樣的,文件位置也放到原來的位置,建立完這個資料庫以後再恢復資料庫,在選項里,把強制還原資料庫選上,然後確認恢復,應該就可以了
⑦ SQL如何備份大容量資料庫
資料庫備份介紹
1、備份位置
在SQL Server上,有多種備份位置可以選擇,如本地磁碟,網路磁碟,遠程地址,磁帶等。
各種備份位置均有自己的優點和缺點。
2、邏輯備份設備
在SQL Server上,可以通過創建邏輯備份設備來完成備份。使用邏輯備份設備的好處是,當變更備份地址時,不需要更改備份腳本,只需要更改邏輯備份設備的定義即可。
創建邏輯備份設備的腳本如下:
SQL code EXEC sp_addmpdevice @devtype=』disk』,@logicalname=』MYBackup』,@physicalname=』D:\backup\mydb.bak』
刪除備份設備的腳本:
SQL code Sp_dropdevice @logicalname=』MYBackup』
上述腳本只是刪除邏輯備份設備的定義,下述腳本將同時刪除備份文件:
SQL code Sp_dropdevice @logicalname=』MYBackup』,@devfile=』DELFILE』
使用邏輯備份設備的方法如下:
SQL code Backup database mydb to MYBackup
當然,還可在邏輯備份設備上指定過期時間等備份屬性,如:
SQL code Backup database mydb to MYBackup WITH EXPIREDATE=』13/01/2010』
或:
SQL code BACKUP DATABASE mydb to MYBackup WITH RETAINDAYS=7
3、備份集與存儲集
每一份備份包含於一個備份集,而一個備份集包含於一個存儲集。通過系統GUI進行備份時,SQL Server會自動指定備份集和存儲集,目的則是為了簡化管理。用T-SQL顯示指定則用如下語法:
SQL code BACKUP DATABASE mydb to MYBackup WITH RETAINDAYS=7,
NAME=』FULL』,
MEDIANAME=』ALLBackups』
NAMEs是指備份集名稱,MEDIANAME是指存儲集名稱。
4、全備份
不管恢復模式是哪一個,所有的備份都必須要有一個全備份,特別是日誌備份和差異備份,如果沒有全備份的話,將無法進行恢復。
簡單的全備份腳本如下所示,也可以通過維護計劃來指定全備份:
SQL code BACKUP DATABASE mydb to DISK=』D:\Backup\mydb.bak』
但需要注意的是,上述命令是將資料庫備份附加到當前的存在的文件上,如果不存在則創建它,並不會覆蓋原有文件。要覆蓋同名的備份文件,需要指定INIT參數。
SQL code BACKUP DATABASE mydb to DISK=』D:\Backup\mydb.bak』 WITH INIT
5、日誌備份
在完全恢復模式或者大容量日誌恢復模式下,日誌備份不僅僅是恢復的需要,同時也是手工管理事務日誌文件的一種方式。如果從不進行備份的話,在完全恢復模式或者大容量恢復模式下,事務日誌將會持續增長,直至消耗完所在磁碟。
日誌備份的腳本如下:
SQL code BACKUP LOG mydb_log TO DISK=』D:\backup\mydb.trn』
需要養成使用.trn為日誌備份的擴展名的習慣。
每個在資料庫上的動作都會被安排一個Log Sequence Number (LSN)。如果需要還原到指定的時間點,需要有持續的LSN記錄。也就是說,在完全恢復模式或者大容量日誌模式下,一個不被打斷的事務日誌備份鏈是恢復資料庫的基本要求。
6、差異備份
使用日誌備份來恢復時,無疑是一個很慢的過程,特別是上一個全備份的歷史比較悠久時。使用差異備份,便能縮短恢復時間。事實上,差異備份只是BACKUP DATABASE的一個選項,如下:
SQL code BACKUP DATABASE mydb TO DISK=』D:\backup\mydb.dif』 WITH DIFFERENTIAL,INIT
進行資料庫恢復時,先恢復資料庫全備份,再恢復資料庫差異備份,最後才恢復日誌備份。
差 異備份是與上一次全備份緊密相連的,不管期間有多少次日誌備份和差異備份,差異備份還是會從上一次全備開始備份。因此,經常會遇到這樣的一種情況,在生產 庫上需要臨時使用資料庫時,便用BACKUP DATABASE … TO DISK=』..』進行了一個備份,下一次的差異備份便會以這回的全備為准,如果過後把這個臨時全備刪除掉後,後面的差異備份就沒用了。
差異備份並不意味著磁碟空間肯定會少,這取決於實際情況。當期間大量操作發生時,差異備份還是會變得很大。
7、錯誤檢測
在備份過程中,備份進程會同時驗證數據,或者校驗不完整頁(torn page),或者驗證校驗和(checksum)。要使用該功能,需要激活該選項。
不完整頁檢測(Torn-page dection)僅僅檢查每一個頁看是否已經寫完成。如果發現一個頁只有部分被寫入,那麼就將其標記為torn。
校驗和驗證(checksum validation)是一種新的頁驗證機制。它會為每個頁添加一個值來表明該頁實際的大小。雖然看起來是個代價很高影響性能的操作,但事實上,它的效率非常高,與torn-page差不多。
備份進程在備份資料庫時,會通過比較在資料庫里的和隨著備份頁寫入硬碟時這兩個之間的值來進行驗證。但是,這個驗證並不是自動完成的,需要顯示指定,在GUI頁面上是個選項。如果通過T-SQL來備份的話,語句如下:
SQL code BACKUP DATABASE mydb TO DISK=』D:\data\mydb.bak』 WITH CHECKSUM
如果備份過程中,發現了錯誤,SQL Server會錯誤信息寫入MSDB上的SUSPECT_PAGE表裡面。同時,在默認情況下,備份行為會停止的(STOP_ON_ERROR),以便管理員排查錯誤。
但 備份過程中的校驗和驗證還有另外一個選項(CONTINUE_ON_ERROR),也就是說,如果發現錯誤,備份過程並不會中斷,而是將錯誤頁信息記錄在 MSDB..SUSPECT_PAGE上而已。需要注意的是,SUSPECT_PAGE表是有行限制的,最多隻能達到1000行,如果達到了的話,備份同 樣會失敗。
激活校驗和驗證的話,很明顯會影響備份的性能。但還是很有必要的。
8、安全備份
完全備份和日誌備份語句還支持使用密碼屬性,如:
SQL code BACKUP DATABASE mydb TO DISK=』D:\mydb.bak』 WITH PASSWORD=』mydb』
所指定的密碼是很容易破解的。因此,如果確實需要對某些備份數據進行加密的話,可以將備份存放於加密的文件系統或者其它安全的存儲設備上。
同時,SQL Server還提供了對真實列進行加密的功能。該加密功能是工業標准。
9、條帶備份
有些情況下,單獨一個硬碟無法存儲一個完整的資料庫備份時,可以將資料庫備份分成多個部分存儲在不同的磁碟上,這種備份方式成為條帶備份。使用條帶備份的優點很明確,就是能很好的利用空間,但如果某部分備份丟失或者損壞,那整個備份將無效。
其語句如下:
SQL code BACKUP DATABASE mydb TO DISK=』D:\mydb.bak』,
DISK=』E:\mydb.bak』 WITH INIT,CHECKSUM,
CONTINUE_ON_ERROR
上述D盤和E盤上的備份是不可分割的。
10、鏡像備份
與條帶備份在多個磁碟上保留同一份備份不同的是,鏡像備份是在不同磁碟上保留多份備份。其語句如下:
SQL code BACKUP DATABASE mydb TO DISK=』D:\mydb.bak』
MIRROR TO DISK=』E:\mydb.bak』
WITH INIT,CHECKSUM,CONTINUE_ON_ERROR
在實際情況下,對日誌備份採取鏡像備份方式會比較合適。
11、COPY-ONLY 備份
在差異備份里曾提到過,差異備份是建立在上一個全備份的基礎上的。因此如果在一個事先安排好的備份計劃里,如果在全備份和差異備份之間再進行了一次全備份後,其差異備份會被打斷,如果把臨時全備份刪除掉後,就產生了數據丟失。
在SQL SERVER 2005以後,SQL SERVER提供了一個選項-only.使用-only選項進行的全備份便不會打算原先的備份計劃,語句如下:
SQL code BACKUP DATABASE mydb TO DISK=』D:\mydb.bak』
WITH INIT,CHECKSUM,COPY_ONLY
三、文件和文件組備份
在SQL SERVER 7.0以後,SQL Server提供了filegroup的概念。文件組不僅僅提供了一個邏輯的存儲地址,還允許將不同的表和索引放在不同的文件組上來提高性能和減少備份時間。
在數據存儲概述上,提到了資料庫有三類數據文件,一般來說,資料庫至少需要兩個(.mdf和.ldf)或者更多的文件。SQL Server不僅允許有多個文件存在(.ldf),還允許多個文件組存在。
一個文件組可以有多個文件,每個文件需要仔細規劃好初始大小及增量。
1、默認文件組
在創建對象時,如果未明確指定文件組,那麼該對象將會存放在默認的文件組上。在默認情況下,默認的文件組是primary,但由於primary文件組不僅可以包含用戶數據,同時還存儲著資料庫結構等技術信息,因此一般建議添加額外的一個文件組,並將其指定為默認文件組。
SQL Server只能有一個默認的文件組。
修改默認文件組的語句如下:
SQL code ALTER DATABASE mydb MODIFY FILEGROUP mydb DEFAULT;
2、為對象指定文件組
當創建表或者索引時,不管是用戶還是系統都需要將表或索引放在某個文件組上。如果在創建表或索引時指定文件組,那麼表或索引將會存儲在指定的文件組上,而不是默認的文件組。
其指定語句如下:
SQL code CREATE TABLE test( [id] int,[notes] text) on mydbdata
也可以通過GUI創建表的頁面來指定文件組。
3、將對象遷移至指定文件組
如果需要變更對象的存儲位置,最簡單的方式則是通過GUI屬性頁面來進行修改通過該方法,可以直觀的看到對象的遷移過程。
同時也可以通過T-SQL來修改,例如:
SQL code ALTER TABLE test drop constraint PK_test WITH (MOVE TO DATA)
4、備份數據文件
備份數據文件同樣可以通過BACKUP DATABASE語句來實現。如下:
SQL code BACKUP DATABASE mydb FILE=』D:\Data\mydb.ndf』 TO DISK=』E:\Backup\mydbdata.bak』
上述語句相當於數據文件級別的全備份,與資料庫級別的備份類似,文件級別上的備份也有差異備份,當然前提是要有相對應的文件全備份。
差異備份的語句如下:
SQL code BACKUP DATABASE mydb FILE=』D:\Data\mydb.ndf』
WITH DIFFERENTIAL
TO DISK=』E:\Backup\mydbdata_dif.bak』
5、備份文件組
與單獨備份文件類似,也可以對文件組進行類似的備份操作。備份文件組的方式也有兩種,一種是通過GUI界面指定,一種則是通過T-SQL。
T-SQL的語句如下:
SQL code BACKUP DATABASE mydb FILEGROUP=』PRIMARY』 TO DISK=』E:\Backup\mydbpri.bak』
6、不完全備份(partial backup)
在文件組備份上,不完全備份其實相當於完全備份,可以通過指定關鍵字READ_WRITE_FILEGROUPS來實現不完全備份。
語句如下:
SQL code BACKUP DATABASE mydb READ_WRITE_FILEGROUPS TO DISK=』D:\mydb.bak』
那不完全備份到底是什麼意思呢?什麼時候需要不完全備份?如果對一個文件組設置了只讀,而這只讀的文件組又需要進行一次備份,這時,可以不用BACKUP DATABASE語句進行備份,只需要挑個時間停止實例,然後執行不完全備份。
⑧ 怎麼用SQL語句備份和恢復資料庫
用SQL語句備份與恢復資料庫的步驟:
備份: mysqlmp --quick --database ondemand1 --u root >bacqup.sql 這樣就能把資料庫中ondemand1的表全部備份出來。
其中參數的格式是:--,兩橫杠,不是我們常用的單橫杠。
quick是在數據比較多的時候,不用該參數的話,所有的數據都會先在內存緩存,接著才導出,這樣會導致伺服器運行減慢。
--u 必須要加一個用戶名,否則系統會提示你進不了ODBC資料庫的。
>backup.sql則是你備份資料庫的目標文件名。
恢復:m1ysql -u root -p database_name d:db.bak,在WIN下,路徑用path/filename.sql是不行的,那就用pathfilename.sql。
sql語句:
是對資料庫進行操作的一種語言。結構化查詢語言(Structured Query Language)簡稱SQL,結構化查詢語言是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關系資料庫系統。
⑨ 用SQL語句備份資料庫
用SQL2000還原bak文件
1.右擊SQL
Server
2000實例下的「資料庫」文件夾。就是master等資料庫上一級的那個圖標。選擇「所有任務」,「還原資料庫」
2.在「還原為資料庫」中填上你希望恢復的資料庫名字。這個名字應該與你的源碼中使用的資料庫名字一致。
3.在彈出的對話框中,選「從設備」
4.點擊「選擇設備」
5.點擊「添加」
6.點擊「文件名」文本框右側的「...」按鈕,選中你的「.BAK」文件,並點擊確定回到「選擇還原設備」對話框。
7.點擊確定回到「還原資料庫」對話框。
8.點擊「選項」選項卡
9.將所有「移至物理文件名」下面的路徑,改為你想還原後的將資料庫文件保存到的路徑。如果你不希望改變,可以直接點擊確定。這時便恢復成功了。
很不錯!我今天終於把.bak搞定了,這里有個要注意的地方就是選項中的「移至物理文件名」下面的路徑,這個路徑一定要修改哦,不然會出現錯誤
⑩ 資料庫SQL 如何完全備份
1、點擊開始菜單,打開sql企業管理器。
2、依次展開sqlserver根目錄,並打開資料庫。
3、選擇要備份的資料庫名,滑鼠右鍵所有任務→備份資料庫。
4、這里需要注意,如果之前有備份的話,一定要先刪除之前的備份記錄,不用擔心只是刪除記錄而不是刪除備份文件。
5、刪除記錄再點添加。
6、選擇備份目的,就是要讓你選擇備份地點和備份文件命名。前面是路徑後面是文件名,這個文件名是自定義的,可以根據時間或者其它來命名,如果想另存的話也可以點擊另存為,然後確定。
7、添加保存路徑後繼續確定,然後會有備份進度提示,直到完成ok。
8、根據路徑來檢查是否有備份文件。