當前位置:首頁 » 操作系統 » c資料庫還原

c資料庫還原

發布時間: 2023-09-28 06:17:17

1. 通過c# winform程序如何對資料庫進行備份和還原

WinForm c# 備份 還原 資料庫, 其實是個非常簡單的問題,一個Form,一個Button,一個OpenFileDialog,一個SaveFileDialog.下面給出備份與還原類

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.sqlClient;
using System.IO;
using System.Collections;
using System.Windows.Forms;
namespace 我的備份與還原

{
class 備份與還原資料庫
{
static string connectionString = "server=.;database=master;uid=sa;pwd=";
SqlConnection conn = new SqlConnection(connectionString);
/// <summary>
/// 備份指定的資料庫文件
/// </summary>
/// <param name="databasename">要還原的資料庫</param>
/// <returns></returns>
public bool BackUpDataBase( string databasefile)
{
if (!File.Exists(databasefile))
{

}
//還原的資料庫MyDataBase
string sql = "BACKUP DATABASE " + "MyDataBase" + " TO DISK = '" + databasefile + ".bak' ";
conn.Open();
SqlCommand comm = new SqlCommand(sql, conn);
comm.CommandType = CommandType.Text;
try
{
comm.ExecuteNonQuery();
}
catch (Exception err)
{
string str = err.Message;
conn.Close();

return false;
}

conn.Close();//關閉資料庫連接
return true;
}

//以下是還原資料庫,稍微麻煩些,要關閉所有與當前資料庫相連的連接

//------------------------------------------------------------------------------------------
public string RestoreDatabase(string backfile)
{
///殺死原來所有的資料庫連接進程
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source=.;Initial Catalog=master;User ID=sa;pwd =";
conn.Open();
string sql = "SELECT spid FROM sysprocesses ,sysdatabases WHERE sysprocesses.dbid=sysdatabases.dbid AND sysdatabases.Name='" +
"MyDataBase"+ "'";
SqlCommand cmd1 = new SqlCommand(sql, conn);
SqlDataReader dr;
ArrayList list = new ArrayList();
try
{
dr = cmd1.ExecuteReader();
while (dr.Read())
{
list.Add(dr.GetInt16(0));
}
dr.Close();
}
catch (SqlException eee)
{
MessageBox.Show(eee.ToString());
}
finally
{
conn.Close();
}

for (int i = 0; i < list.Count; i++)
{
conn.Open();
cmd1 = new SqlCommand(string.Format("KILL {0}", list[i].ToString()), conn);
cmd1.ExecuteNonQuery();
conn.Close();
MessageBox.Show("系統已經清除的資料庫線程: " + list[i].ToString() + "\r\n正在還原資料庫!");
}
//這里一定要是master資料庫,而不能是要還原的資料庫,因為這樣便變成了有其它進程
//佔用了資料庫。
string constr = @"Data Source=.;Initial Catalog=master;User ID=sa;pwd =";
string database = MyDataBase;
string path = backfile;
string BACKUP = String.Format("RESTORE DATABASE {0} FROM DISK = '{1}'", database, path);
SqlConnection con = new SqlConnection(constr);
SqlCommand cmd = new SqlCommand(BACKUP, con);
con.Open();
try
{
cmd.ExecuteNonQuery();
MessageBox.Show("還原成功,點擊退出系統!");
Application.Exit();
}
catch (SqlException ee)
{
//throw(ee);

//MessageBox.Show("還原失敗");

MessageBox.Show(ee.ToString());

}
finally
{
con.Close();
}
return "成功與否字元串";
}
}
}

2. 如何恢復系統資料庫

恢復系統資料庫:
1、新建一個資料庫「kelin」(本資料庫為需要還原的資料庫)。

2、右鍵點擊需還原的資料庫,選擇」任務「→」還原「→」資料庫「。

3、點擊選擇「源設備」,然後點擊「..」,彈出框中備份媒介選擇「文件」,然後點擊「添加」按鈕,找到可以用於還原的1.bak文件,點擊「確定」按鈕。如 圖所示:

4、在「選擇用於還原的備份集」下面勾選設定好的用於還原的備份集

5、點擊左側「選項」,在新界面中勾選「覆蓋現有資料庫」,要注意修改「還原為」中的途徑,下面途徑僅供參考:
C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\kelin.mdf
C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\kelin_log.ldf
然後點擊確定按鈕。

6、最後彈出」對資料庫『kelin』的還原已成功完成「點擊確定,就完成了對整個資料庫的還原。

3. 如何還原sqlserver資料庫

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 Server作資料庫後台時,一般採用手工的方式利用SQL Server自身提供的可視化工具或SQL語言進行數據的備份還原功能(余正濤等,2003),但是由於SQL Server 的復雜性,操作比較繁瑣,就使得普通用戶對數據的備份與還原有一定的困難,並且容易造成錯誤,可能造成數據丟失等災難性的後果。考慮到系統完整性和可靠性,可在VB 6.0環境下實現SQL Server資料庫的備份與還原工作。

(一)實現思路

為了通過程序實現資料庫備份與還原工作,必須在VB環境下引用SQLDMO,SQLDMO(SQL Distributed Management Objects,SQL 分布式管理對象)封裝了Microsoft SQL Server資料庫中的對象。SQLDMO是Microsoft SQL Server中企業管理器所使用的應用程序介面(包括備份和恢復),允許用支持自動化或COM 的語言編寫應用程序。SQLDMO 對象來自SQLDMO.dll,SQLDMO.dll 是隨 SQL Server 2000 一起發布的。並通過CreateObject("SQLD MO.SQLServer")函數創建新對象,使用SQLServ er.Connect函數經密碼校驗可連接伺服器,再創建備份核心對象SQLDMO.Backup,同時指定備份文件等參數即可實現資料庫備份與還原。具體的備份處理流程如圖8-10所示。

特別注意SQL Server 2000 所安裝的硬碟分區格式是否是NTFS格式,NTFS是最適合安裝SQL Serv⁃er的文件系統。它比FAT文件系統更穩定且更容易恢復。而且它還包括一些安全選項,例如文件和目錄ACL,以及文件加密(EFS)。如果是Fat32格式建議將它改成NTFS格式,因為Fat32支持最大文件為4G,資料庫超過4G通常會提示日誌文件太大之類的錯誤。

圖8-10 資料庫備份處理流程圖

(二)關鍵代碼

'************資料庫備份操作*************

Set gSQLServer=getSQLServer(ServerName,UserName,password)

Private Function BackUpData(gDatabaseName As String,gBkupRstrFileName As String,Server⁃Name As String,UserName As String,password As String)As String

On Error GoTo ErrHandler:

Dim oBackup As SQLDMO.Backup

Dim gSQLServer As SQLDMO.SQLServer

Set tprg=New CProgress

tprg.Title ="正在執行資料庫備份......"

ServerName為伺服器名稱;serName為用戶名;password為超級密碼

'連接伺服器

Set oBackup=New SQLDMO.Backup

Set oBackupEvent=oBackup

gDatabaseName為所要備份數據名稱;gBkupRstrFileName為備份文件名

oBackup.Database=gDatabaseName

oBackup.Files=gBkupRstrFileName

已存在gBkupRstrFileName備份文件名,則覆蓋

If Len(Dir(gBkupRstrFileName))>0 Then

Kill(gBkupRstrFileName)

End If

oBackup.PercentCompleteNotification=1

Screen.MousePointer=vbHourglass

oBackup.SQLBackup gSQLServer

DoEvents

Screen.MousePointer=vbDefault

'清空內存、關閉連接

Set oBackupEvent=Nothing

Set oBackup=Nothing

gSQLServer.Close

Set gSQLServer=Nothing

Set tprg=Nothing

Exit Function

ErrHandler:

m_str狀態=Err.Description

Resume Next

Set tprg=Nothing

End Function

'************資料庫還原操作*************

Private Function RestoreData(gDatabaseName As String,gBkupRstrFileName As String,Server⁃Name As String,UserName As String,password As String)As String

On Error GoTo ErrHandler:

Dim oRestore As SQLDMO.Restore

Dim msg As String

Dim Response As String

Set tprg=New CProgress

tprg.Title ="正在執行資料庫還原......"

Dim gSQLServer As SQLDMO.SQLServer

'ServerName為伺服器名稱;serName為用戶名;password為超級密碼

'連接伺服器

Set gSQLServer=getSQLServer(ServerName,UserName,password)

Set oRestore=New SQLDMO.Restore

Set oRestoreEvent=oRestore

'gDatabaseName為所要還原數據名稱;gBkupRstrFileName為還原文件名

oRestore.Database=gDatabaseName

oRestore.Files=gBkupRstrFileName

Screen.MousePointer=vbHourglass

oRestore.PercentCompleteNotification=1

oRestore.SQLRestore gSQLServer

Screen.MousePointer=vbDefault

'清空內存、關閉連接

Set oRestoreEvent=Nothing

Set oRestore=Nothing

gSQLServer.Close

Set gSQLServer=Nothing

Set tprg=Nothing

Exit Function

ErrHandler:

m_str狀態=Err.Description

Resume Next

Set tprg=Nothing

End Function

'************顯示備份進度*************

'************顯示還原進度*************

End Sub

Private Sub oBackupEvent_PercentComplete(ByVal Message As String,ByVal Percent As Long)

DoEvents

tprg.Value=Percent

End Sub

Private Sub oRestoreEvent_PercentComplete(ByVal Message As String,ByVal Percent As Long)

DoEvents

tprg.Value=Percent

5. 如何還原sql資料庫

1、要進行還原資料庫操作我們先需要有一個資料庫,這里直接打開SQL Server Management Studio,然後打開實例,在左側按照下圖中紅色箭頭指示右鍵點擊資料庫,然後點擊 新建資料庫,如下圖:

6. Navicat for MySQL怎麼還原資料庫啊,psc格式的

步驟如下:

1、首先打開navicat,找到需要備份的資料庫,並且打開,如圖所示。

熱點內容
mud源碼下載 發布:2025-01-23 21:19:46 瀏覽:134
反恐精英15游戲伺服器ip 發布:2025-01-23 21:13:38 瀏覽:850
起床的戰爭玩什麼伺服器 發布:2025-01-23 21:03:06 瀏覽:141
企業級安卓手機防毒軟體哪個好 發布:2025-01-23 20:59:28 瀏覽:243
資料庫精美 發布:2025-01-23 20:37:05 瀏覽:235
mysql怎麼編譯驅動 發布:2025-01-23 20:35:15 瀏覽:467
修改資料庫的語句是 發布:2025-01-23 20:26:17 瀏覽:762
linuxping域名 發布:2025-01-23 20:24:34 瀏覽:479
神經網路演算法應用 發布:2025-01-23 20:18:36 瀏覽:219
冒險島按鍵精靈腳本下載 發布:2025-01-23 19:46:50 瀏覽:751