當前位置:首頁 » 編程語言 » SQL創建備份表同時備份數據
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

SQL創建備份表同時備份數據

發布時間: 2022-06-03 03:00:41

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語句給資料庫表備份

如果你的資料庫是ORACLE:

c:\>exp system/password owner(user1,user2,...) file='dbbackup20090718-1.dmp' log='dbbackup20090718-1.log' buffer=65530

執行後會在c盤根目錄下備份文件,如果要讓備份文件存放在其他位置,可以給file和log加上路徑。

㈢ sql server 怎樣創建資料庫備份

待雙擊運行資料庫備份的文件
XXX.CMD
內容:
isql
-U
用戶名
-P
密碼
-S
資料庫IP
-i
待執行備份的SQL文件
舉例:
//hgmd_in.cmd
isql
-U
sa
-P
sa
-S
127.0.0.1
-i
hgmd_in.sql
待執行備份的SQL文件
XXX.SQL
內容:
use
待備份資料庫名
go
backup
database
資料庫名
to
disk='磁碟路徑'
with
init
go
//hgmd_in.sql
--
資料庫:hgmd_in
use
hgmd_in
go
--先備份資料庫
backup
database
hgmd_in
to
disk='d:\hgmd_in_0301a.bak'
with
init
go

㈣ 怎麼用SQL語句備份和恢復資料庫

用SQL語句備份與恢復資料庫的步驟:

  1. 備份: mysqlmp --quick --database ondemand1 --u root >bacqup.sql 這樣就能把資料庫中ondemand1的表全部備份出來。

  2. 其中參數的格式是:--,兩橫杠,不是我們常用的單橫杠。

  3. quick是在數據比較多的時候,不用該參數的話,所有的數據都會先在內存緩存,接著才導出,這樣會導致伺服器運行減慢。

  4. --u 必須要加一個用戶名,否則系統會提示你進不了ODBC資料庫的。

  5. >backup.sql則是你備份資料庫的目標文件名。

  6. 恢復:m1ysql -u root -p database_name d:db.bak,在WIN下,路徑用path/filename.sql是不行的,那就用pathfilename.sql。

sql語句:

是對資料庫進行操作的一種語言。結構化查詢語言(Structured Query Language)簡稱SQL,結構化查詢語言是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關系資料庫系統。

㈤ SQL資料庫的備份

如果一個公司每晚都必須執行多個備份任務,比如要備份SQL資料庫、Exchange資料庫、用戶創建的文件,還有Web伺服器,它們的備份順序是什麼呢?
如果不能同時備份的話,那麼企業應該首先選擇備份最容易被破壞的文件。比如,如果備份軟體不允許打開要備份的文件,那麼企業就應該首先備份用戶文件。
按照這種邏輯,接下來就應該備份SQL伺服器。盡管SQL可以在其運行的時候備份,但SQL伺服器還同時要承擔用戶巨大的負載。另外,備份過程會搶佔SQL伺服器的I/O周期,所以最好是在非高峰期為其備份。
Exchange伺服器可以最後備份,因為Exchange可以隨時備份,即使在使用過程中,而且Exchange資料庫具有相對較低的I/O需求,至少和SQL相比是這樣。

㈥ SQL資料庫備份

備份資料庫
1、打開sql企業管理器,在控制台根目錄中依次點開microsoft
sql
server
2、sql
server組-->雙擊打開你的伺服器-->雙擊打開資料庫目錄
3、選擇你的資料庫名稱(如財務資料庫cwdata)-->然後點上面菜單中的工具-->選擇備份資料庫
4、備份選項選擇完全備份,目的中的備份到如果原來有路徑和名稱則選中名稱點刪除,然後點添加,如果原來沒有路徑和名稱則直接選擇添加,接著指定路徑和文件名,指定後點確定返回備份窗口,接著點確定進行備份。

㈦ sql語句對資料庫備份如何寫

今天看到一篇關於ORCLE的邏輯備份,冷、熱備份的帖子講的挺好的,不過這篇文章是以ORACLE 7為例子,雖然現在已經有很好很強大的RMAN,但還是覺得有必要轉過來,不能喜新厭舊嘛。

==================================================================================

Oracle資料庫的備份與恢復

---- 當我們使用一個資料庫時,總希望資料庫的內容是可靠的、正確的,但由於計算機系統的故障(包括機器故障、介質故障、誤操作等),資料庫有時也可能遭到破壞,這時如何盡快恢復數據就成為當務之急。如果平時對資料庫做了備份,那麼此時恢復數據就顯得很容易。由此可見,做好資料庫的備份是多麼的重要,下面筆者就以ORACLE7為例,來講述一下資料庫的備份和恢復。ORACLE 資料庫有三種標準的備份方法,它們分別為導出/導入(EXPORT/IMPORT)、冷備份、熱備份。導出備份是一種邏輯備份,冷備份和熱備份是物理備份。

---- 一、 導出/導入(Export/Import)

---- 利用Export可將數據從資料庫中提取出來,利用Import則可將提取出來的數據送回Oracle資料庫中去。

---- 1. 簡單導出數據(Export)和導入數據(Import)

---- Oracle支持三種類型的輸出:

---- (1)表方式(T方式),將指定表的數據導出。

---- (2)用戶方式(U方式),將指定用戶的所有對象及數據導出。

---- (3)全庫方式(Full方式),將資料庫中的所有對象導出。

---- 數據導出(Import)的過程是數據導入(Export)的逆過程,它們的數據流向不同。

---- 2. 增量導出/導入

---- 增量導出是一種常用的數據備份方法,它只能對整個資料庫來實施,並且必須作為SYSTEM來導出。在進行此種導出時,系統不要求回答任何問題。導出文件名預設為export.dmp,如果不希望自己的輸出文件定名為export.dmp,必須在命令行中指出要用的文件名。

---- 增量導出包括三個類型:

---- (1)「完全」增量導出(Complete)

---- 即備份整個資料庫,比如:

---- $exp system/manager inctype=complete file=990702.dmp

---- (2) 「增量型」增量導出

---- 備份上一次備份後改變的數據。比如:

---- $exp system/manager inctype=incremental file=990702.dmp

---- (3) 「累計型」增量導出(Cumulative)

---- 累計型導出方式只是導出自上次「完全」 導出之後資料庫中變化了的信息。比如:

---- $exp system/manager inctype=cumulative file=990702.dmp

---- 資料庫管理員可以排定一個備份日程表,用數據導出的三個不同方式合理高效地完成。

---- 比如資料庫的備份任務可作如下安排:

---- 星期一:完全導出(A)

---- 星期二:增量導出(B)

---- 星期三:增量導出(C)

---- 星期四:增量導出(D)

---- 星期五:累計導出(E)

---- 星期六:增量導出(F)

---- 星期日:增量導出(G)

---- 如果在星期日,資料庫遭到意外破壞,資料庫管理員可按以下步驟來恢復資料庫:

---- 第一步:用命令CREATE DATABASE重新生成資料庫結構;

---- 第二步:創建一個足夠大的附加回段。

---- 第三步:完全增量導入A:

---- $imp system./manager inctype= RECTORE FULL=Y FILE=A

---- 第四步:累計增量導入E:

---- $imp system/manager inctype= RECTORE FULL=Y FILE =E

---- 第五步:最近增量導入F:

---- $imp system/manager inctype=RESTORE FULL=Y FILE=F

---- 二、 冷備份

---- 冷備份發生在資料庫已經正常關閉的情況下,當正常關閉時會提供給我們一個完整的資料庫。冷備份是將關鍵性文件拷貝到另外位置的一種說法。對於備份Oracle信息而言,冷備份是最快和最安全的方法。冷備份的優點是:

---- 1.是非常快速的備份方法(只需拷貝文件)

---- 2.容易歸檔(簡單拷貝即可)

---- 3.容易恢復到某個時間點上(只需將文件再拷貝回去)

---- 4.能與歸檔方法相結合,作資料庫「最新狀態」的恢復。

---- 5.低度維護,高度安全。

---- 但冷備份也有如下不足:

---- 1.單獨使用時,只能提供到「某一時間點上」的恢復。

---- 2.在實施備份的全過程中,資料庫必須要作備份而不能作其它工作。也就是說,在冷備份過程中,資料庫必須是關閉狀態。

---- 3.若磁碟空間有限,只能拷貝到磁帶等其它外部存儲設備上,速度會很慢。

---- 4.不能按表或按用戶恢復。

---- 如果可能的話(主要看效率),應將信息備份到磁碟上,然後啟動資料庫(使用戶可以工作)並將所備份的信息拷貝到磁帶上(拷貝的同時,資料庫也可以工作)。冷備份中必須拷貝的文件包括:

---- 1.所有數據文件

---- 2.所有控制文件

---- 3.所有聯機REDO LOG文件

---- 4.Init.ora文件(可選)。

---- 值得注意的是冷備份必須在資料庫關閉的情況下進行,當資料庫處於打開狀態時,執行資料庫文件系統備份是無效的

---- 下面是做冷備份的完整例子:

---- (1) 關閉資料庫$sqldba lmode=y

---- SQLDBA >connect internal;

---- SQLDBA >shutdown normal;

---- (2) 用拷貝命令備份全部的時間文件、重做日誌文件、控制文件、初始化參數文件

---- SQLDBA >! cp < file > <

; backup directory >

---- (3) 重啟Oracle資料庫

---- $sqldba lmode=y

---- SQLDBA >connect internal;

---- SQLDBA >startup;

---- 三、 熱備份

---- 熱備份是在資料庫運行的情況下,採用archivelog mode方式備份數據的方法。所以,如果你有昨天夜裡的一個冷備份而且又有今天的熱備份文件,在發生問題時,就可以利用這些資料恢復更多的信息。熱備份要求資料庫在Archivelog方式下操作,並需要大量的檔案空間。一旦資料庫運行在archivelog狀態下,就可以做備份了。熱備份的命令文件由三部分組成:

---- 1.數據文件一個表空間一個表空間地備份。

---- (1)設置表空間為備份狀態

---- (2)備份表空間的數據文件

---- (3)恢復表空間為正常狀態

---- 2.備份歸檔log文件。

---- (1)臨時停止歸檔進程

---- (2)log下那些在archive redo log目標目錄中的文件

---- (3)重新啟動archive進程

---- (4)備份歸檔的redo log 文件

---- 3.用alter database backup controlfile命令來備份拷貝文件

---- 熱備份的優點是:

---- 1.可在表空間或數據文件級備份,備份時間短。

---- 2.備份時資料庫仍可使用。

---- 3.可達到秒級恢復(恢復到某一時間點上)。

---- 4.可對幾乎所有資料庫實體作恢復。

---- 5.恢復是快速的,在大多數情況下在資料庫仍工作時恢復。

---- 熱備份的不足是:

---- 1.不能出錯,否則後果嚴重。

---- 2.若熱備份不成功,所得結果不可用於時間點的恢復。

---- 3.因難於維護,所以要特別仔細小心,不允許「以失敗而告終」。

㈧ sql server 2008 中怎麼創建備份表

方法/步驟

打開sqlserver2008,連接成功後,選擇需要導出表的資料庫--任務---生成腳本

顯示:生成和發布腳本窗口--簡介(某些可能關閉該頁面的,可以省略該步驟),點擊下一步

顯示:生成和發布腳本窗口--選擇對象--按照圖片操作即可

顯示:生成和發布腳本窗口--設置腳本編寫選項--按照圖片操作即可

點擊完高級以後,彈出--高級腳本編寫選項,選擇常規--要編寫的腳本的數據類型--架構和數據 (該步很重要)--選擇完點擊確定--點擊下一步

顯示:生成和發布腳本窗口--摘要--下一步--完成