當前位置:首頁 » 編程語言 » 還原事務日誌的SQL語句
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

還原事務日誌的SQL語句

發布時間: 2022-12-19 12:46:26

1. 怎麼用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,結構化查詢語言是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關系資料庫系統。

2. 如何使用事務日誌恢復sql server資料庫

恢復過程

以資料庫恢復模式設為FULL為例:

恢復過程的第一步是執行尾日誌備份,(BACKUP LOG Student TO DISK='E:stulog.dmp' ) 。

在恢復一個資料庫之前,為保證上次備份之後發生改變的記錄都包含在恢復過程之中,需要執行這種類型的備份。

下一步,查找資料庫備份文件在機器或網路中的存儲位置。

如果要在另一台伺服器上恢復資料庫,最好是把這些文件復制到目標伺服器中。在備份文件所在的位置,找出最後一個完整的資料庫備份(這些文件通常使用.bak為擴展名);恢復這個完整的備份。


下面的腳本將完整的備份文件應用於NewDatabase資料庫:

RESTOREDATABASENewDatabase
FROMDISK='D:.bak'
WITH
MOVE'PreviousDatabase'TO'D:DataFilesTestDatabase.mdf',
MOVE'PreviousDatabase_log'TO'D:DataFilesTestDatabase_Log.ldf',
NORECOVERY

這段腳本指出完整備份文件位於伺服器的D盤中,你正在使用備份文件恢復NewDatabase這個資料庫。

腳本中的語句將數據文件和日誌文件從完整備份文件轉移到TestDatabase資料庫的新文件中。腳本中的最後一個語句——NORECOVERY——非常重要。

NORECOVERY模式有三種選項,如下所示:

  • NORECOVERY:告訴SQL Server你沒有完成恢復資料庫的過程,隨後會出現恢復文件。當資料庫處於這種狀態時,資料庫還不能使用,因而不允許建立連接。

  • RECOVERY:告訴SQL Server你已經完成資料庫恢復過程,資料庫即將准備就緒。這是默認選項,也是最常用的選項。

  • STANDBY:告訴SQL Server當前資料庫還未為完成恢復做好准備,隨後可以使用日誌文件進行恢復。如果必要,你可以使用這個選項為恢復資料庫建立連接。但是,如果當前不存在連接,將來的事務日誌只能應用於資料庫。

一旦你使用NORECOVERY選項恢復了完整備份,你可以開始應用事務日誌備份或差異備份。

差異備份

差異備份是指對上次完整資料庫備份後資料庫發生的任何改變進行備份。如果有幾個差異備份,只需要恢復最後一個備份文件。在這種情況下,並不存在差異備份,因此可以直接轉向事務日誌備份。

事務日誌備份

事務日誌備份保留上次事務日誌備份後發生的所有事務的痕跡;它還允許把資料庫恢復到資料庫發生錯誤之前的一個時間點。事務日誌備份按順序發生,從而建立一個備份鏈。在把一連串事務日誌備份恢復到一個時間點時,事務日誌文件也必須按順序恢復。

當使用一個資料庫維護計劃來建立事務日誌備份時,事務日誌文件名中往往包含一個時間指示器。

下面的腳本使用NORECOVERY選項應用三個事務日誌備份,最後一個語句把資料庫恢復到最後一個事務日誌文件的結束點。

RESTORELOGNewDatabase
FROMDISK=''D:BackupFilesTestDatabase_TransactionLogBackup1.trn'
WITHNORECOVERY
RESTORELOGNewDatabase
FROMDISK=''D:BackupFilesTestDatabase_TransactionLogBackup2.trn'
WITHNORECOVERY
RESTORELOGNewDatabase
FROMDISK=''D:BackupFilesTestDatabase_TransactionLogBackup3.trn'
WITHNORECOVERY
RESTORELOGNewDatabase
FROMDISK=''D:BackupFilesTestDatabase_TransactionLogBackup4.trn'
WITHRECOVERY

恢復到一個時間點

在上面的例子中,把資料庫恢復到最後一個事務日誌的結束點。

如果想把資料庫恢復到事務日誌結束前的某個特定的時間點,必須使用STOPAT選項。

下面的腳本把日誌序列中的第四個事務日誌恢復到4:01 AM——正好在資料庫出錯之前。

RESTORELOGNewDatabase
FROMDISK=''D:BackupFilesTestDatabase_TransactionLogBackup4.trn'
WITHSTOPAT=N'6/28/20074:01:45PM',RECOVERY

3. SQL資料庫怎麼還原 用友SQL SERVER恢復資料庫誤刪除數據方法

SQL Server中誤刪除數據的恢復本來不是件難事,從事務日誌恢復即可。但是,這個恢復需要有兩個前提條件:

1. 至少有一個誤刪除之前的資料庫完全備份。

2. 資料庫的恢復模式(Recovery mode)是「完整(Full)」。

針對這兩個前提條件,會有三種情況:

情況一、如果這兩個前提條件都存在,通過SQL語句只需三步就能恢復(參考文章),無需藉助第三方工具。

a) 備份當前資料庫的事務日誌:BACKUP LOG [資料庫名] TO disk= N'備份文件名' WITH NORECOVERY

b) 恢復一個誤刪除之前的完全備份:RESTORE DATABASE [資料庫名] FROM DISK = N'完全備份文件名' WITH NORECOVERY, REPLACE

c) 將資料庫恢復至誤刪除之前的時間點:RESTORE LOG [資料庫] FROM DISK = N'第一步的日誌備份文件名' WITH STOPAT = N'誤刪除之前的時間點' , RECOVERY

情況二、如果第1個前提條件不存在,第2個前提條件存在,需要藉助第三方工具。

情況三、如果第2個前提條件不存在,無法恢復。所以,一定要將資料庫恢復模式設置為「完整(Full)」。

我現在面臨的是第二種情況,需要找第三方工具。

開始找的是Log Explorer for SQL Server,不支持SQL Server 2008。

後來找的是SQL Log Rescue,也不支持SQL Server 2008。

接著找到的是SysTools SQL Recovery,支持SQL Server 2008,但需要購買,Demo版並沒有數據恢復功能。

最終在officerecovery.com上找到Recovery for SQL Server,雖然也是商業軟體,需要購買,但Demo版可以恢復數據,只要資料庫文件不超過24Gb。幸好朋友的資料庫文件不大,用它完成了誤刪除數據的恢復。

下面分享一下用Recovery for SQL Server進行恢復的操作步驟:

1. 運行Recovery for SQL Server

2. 點擊菜單中的 File > Recover,選擇要恢復的資料庫的數據文件(.mdf)

3. Next > Next,進入 Recovery Configuration 界面,選擇Custom(選擇了Custom才可以選擇從日誌中恢復誤刪除的數據)。

4. Next 進入 Recovery options 窗口,選中 Search for deleted records,並選擇要恢復的資料庫的日誌文件路徑(log file path)。

5. Next 並選擇目標文件夾(Destination folder),用於存放恢復過程中生成的SQL語句與bat文件。

6. 點擊Start,開始恢復操作(在上一步選擇的目標文件夾中生成相應的SQL文件與Bat文件),然後,出現 SQL Server Database Creation Utility 窗口。

7. Next,選擇被恢復數據存放的目標資料庫。

8. Next, 選擇 Import availiable data from both database and log files

9. Next, Next, 然後就完成數據的恢復!

4. sql資料庫刪除了怎麼恢復數據

sql
server中誤刪除數據的恢復本來不是件難事,從事務日誌恢復即可。但是,這個恢復需要有兩個前提條件:
1.
至少有一個誤刪除之前的資料庫完全備份。
2.
資料庫的恢復模式(recovery
mode)是「完整(full)」。
針對這兩個前提條件,會有三種情況:
情況一、如果這兩個前提條件都存在,通過sql語句只需三步就能恢復(參考文章),無需藉助第三方工具。
a)
備份當前資料庫的事務日誌:backup
log
[資料庫名]
to
disk=
n'備份文件名'
with
norecovery
b)
恢復一個誤刪除之前的完全備份:restore
database
[資料庫名]
from
disk
=
n'完全備份文件名'
with
norecovery,
replace
c)
將資料庫恢復至誤刪除之前的時間點:restore
log
[資料庫]
from
disk
=
n'第一步的日誌備份文件名'
with
stopat
=
n'誤刪除之前的時間點'
,
recovery
情況二、如果第1個前提條件不存在,第2個前提條件存在,需要藉助第三方工具。
情況三、如果第2個前提條件不存在,無法恢復。所以,一定要將資料庫恢復模式設置為「完整(full)」。
我現在面臨的是第二種情況,需要找第三方工具。
開始找的是log
explorer
for
sql
server,不支持sql
server
2008。
後來找的是sql
log
rescue,也不支持sql
server
2008。
接著找到的是systools
sql
recovery,支持sql
server
2008,但需要購買,demo版並沒有數據恢復功能。
最終在officerecovery.com上找到recovery
for
sql
server,雖然也是商業軟體,需要購買,但demo版可以恢復數據,只要資料庫文件不超過24gb。幸好朋友的資料庫文件不大,用它完成了誤刪除數據的恢復。
下面分享一下用recovery
for
sql
server進行恢復的操作步驟:
1.
運行recovery
for
sql
server
2.
點擊菜單中的
file
>
recover,選擇要恢復的資料庫的數據文件(.mdf)
3.
next
>
next,進入
recovery
configuration
界面,選擇custom(選擇了custom才可以選擇從日誌中恢復誤刪除的數據)。
4.
next
進入
recovery
options
窗口,選中
search
for
deleted
records,並選擇要恢復的資料庫的日誌文件路徑(log
file
path)。
5.
next
並選擇目標文件夾(destination
folder),用於存放恢復過程中生成的sql語句與bat文件。
6.
點擊start,開始恢復操作(在上一步選擇的目標文件夾中生成相應的sql文件與bat文件),然後,出現
sql
server
database
creation
utility
窗口。
7.
next,選擇被恢復數據存放的目標資料庫。
8.
next,
選擇
import
availiable
data
from
both
database
and
log
files
9.
next,
next,
然後就完成數據的恢復!

5. sql恢復修改前數據

1、首先運行Recovery for SQL Server。