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

c備份資料庫

發布時間: 2024-04-09 07:51:53

① 通過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 "成功與否字元串";
}
}
}

② postgresql 怎麼備份資料庫

PostgreSQL自帶一個客戶端pgAdmin,裡面有個備份,恢復選項,也能對資料庫進行備份 恢復(還原),但最近發現資料庫慢慢龐大的時候,經常出錯,備份的文件過程中出錯的幾率那是相當大,手動調節灰常有限。所以一直尋找完美的備份恢復方案。

夢里尋他千網路,伊人卻在燈火闌珊處...其實PostgreSQL內置不少的工具,尋找的備份恢復方案就在其中:pg_mp,psql。這兩個指令 在資料庫的安裝目錄下,比如我自己本地安裝的,路徑形如:C:\Program Files\PostgreSQL\9.5\;然後進入到bin文件夾,會看到不少的exe文件,這就是PostgreSQL內置的工具了。裡面會找到 pg_mp.exe,psql.exe兩個文件。我們怎麼用他們?
用法:
備份資料庫,指令如下:
pg_mp -h 164.82.233.54 -U postgres databasename > C:\databasename.bak

開始-運行-cmd 彈出dos控制台;然後 在控制台里,進入PostgreSQL安裝目錄bin下:
cd C:\Program Files\PostgreSQL\9.0\bin
最後執行備份指令:
pg_mp -h 164.82.233.54 -U postgres databasename > C:\databasename.bak

指令解釋:如上命令,pg_mp 是備份資料庫指令,164.82.233.54是資料庫的ip地址(必須保證資料庫允許外部訪問的許可權哦~),當然本地的資料庫ip寫 localhost;postgres 是資料庫的用戶名;databasename 是資料庫名。> 意思是導出到C:\databasename.bak文件里,如果沒有寫路徑,單單寫databasename.bak文件名,那麼備份文件會保存在C: \Program Files\PostgreSQL\9.0\bin 文件夾里。

恢復資料庫,指令如下:
psql -h localhost -U postgres -d databasename < C:\databasename.bak(測試沒有成功)

pg_restore.exe --host localhost --port 5432 --username "postgres" --dbname "symbolmcnew" --no-password --verbose "databasename.backup"(測試成功)

指令解釋:如上命令,psql是恢復資料庫命令,localhost是要恢復到哪個資料庫的地址,當然你可以寫上ip地址,也就是說能遠程恢復(必須保證 資料庫允許外部訪問的許可權哦~);postgres 就是要恢復到哪個資料庫的用戶;databasename 是要恢復到哪個資料庫。< 的意思是把C:\databasename.bak文件導入到指定的資料庫里。
以上所有的是針對windows而言的,如果在linux下,會不會有效?

在linux里依然有效。有一個值得注意的是:如果直接進入PostgreSQL的安裝目錄bin下,執行命令,可能會出現 找不到pg_mp,psql的現象,我們在可以這樣:
備份:
/opt/PostgreSQL/9.5/bin/pg_mp -h 164.82.233.54 -U postgres databasename > databasename.bak

恢復:
/opt/PostgreSQL/9.5/bin/psql -h localhost -U postgres -d databasename < databasename.bak

③ ORACLE資料庫如何備份數據最好是備份哪些東西(oracle怎麼備份資料庫)

Oracle資料庫的耐凳三種標準的備份方法:

1.導出/導入(EXP/IMP)。

2.熱備份。

3.冷備份。

注釋:導出備件是一種邏輯備份,冷備份和熱備份是物理備份。

一、導出/導入(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)

即備份三個資料庫,比如:

expsystem/==040731.dmp

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

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

expsystem/==040731.dmp

(3)、「累積型」增量導出

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

expsystem/==040731.dmp

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

比如資料庫的被封任務可以做如下安排:

星期一:完全備份(A)

星期二:增量導出(B)

星期三:增量導出(C)

星期四:增量導出(D)

星期五:累計導出(E)

星期六:增量導出(F)

星期日:增量導出(G)

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

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

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

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

impsystem/=RESTOREFULL=yFILE=A

第四步:累計增量導昌嘩旅入E:

impsystem/=RESTOREFULL=YFILE=E

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

impsystem/=RESTOREFULL=YFILE=F

二、冷備份

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

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

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

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

4、能與歸檔方法相結合,做資料庫「最佳狀態」的恢復。

5、低度維護,高度安全。

但冷備份也有如下不足:

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

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

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

4、不能按表或按用戶恢復。

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

1、所有數據文件

2、所有控制文件

3、所有聯機REDOLOG文件

4、Init.ora文件(可選)

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

下面是作冷備份的完整例子。

(1)關閉資料庫

sqlplus/nolog

sql

sql<;

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

sql<<

(3)重啟Oracle資料庫

sql

三、熱備份

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

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

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

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

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

2.備份歸檔log文件

(1)臨時停止歸檔進程

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

(3)重新啟動archive進程

(4)備份歸檔的redolog文件

3.用命令來備份控制文件

熱備份的優點是:

1.可在表空間或資料庫文件級備份,備份的時間短。

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

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

4.可對幾乎所有資料庫實體做恢復

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

熱備份的不足之處:

1.不能出錯,否則後果不堪設想。

2.假如熱備份不成功,所得結果則不能用於時間點的恢復。

3.因為難於維護,所以需要特別仔細小心,不允許在操作時半途而廢。

關於Oracle資料庫的備份方式就為大家講解到這里,以後大家需要進行資料庫備份工作時可以參照上文中講解的,從上文中任選一種,就可以完成Oracle資料庫的備份,希望上文中涉及到的內容對大家能夠有所幫助。

④ 資料庫備份有幾種方式以及各自有什麼特點

第一種是手動備份。直接進入到資料庫管理頁面,將資料庫手動導出到本地即可實現資料庫備份。
第二種是適用於虛擬主機的方案。首先進入『多備份』,然後登陸,進入控制面板。首次進入會有備份環境提示,選擇保護伺服器

進入頁面後,選擇web模式,然後選擇資料庫。如果非首次訪問,直接點擊添加,然後選擇資料庫

填入資料庫信息,然後設定備份頻率,創建任務即可實現備份。
第三種是適用伺服器或者VPS。首先進入『多備份』,如果是首次登錄,就如上圖選擇保護伺服器,然後下載客戶端。如果非首次登錄,直接點擊左下角下載客戶端

下載好客戶端以後打開dbfen.exe,然後登陸『多備份』賬號,選擇資料庫,填入資料庫信息,設定備份頻率,即可開始備份

熱點內容
冒險家選哪個配置性價比高 發布:2024-11-27 20:58:36 瀏覽:876
阿里雲伺服器可以多開嗎 發布:2024-11-27 20:58:18 瀏覽:496
圖片水印加密 發布:2024-11-27 20:52:37 瀏覽:118
php客戶管理 發布:2024-11-27 20:47:26 瀏覽:371
java數組中的對象 發布:2024-11-27 20:45:37 瀏覽:492
手機報停恢復需要的是什麼密碼 發布:2024-11-27 20:37:02 瀏覽:592
域名訪問量查詢 發布:2024-11-27 20:22:13 瀏覽:725
如何清理網頁帳號和登錄密碼 發布:2024-11-27 20:18:53 瀏覽:372
大發明解壓密碼 發布:2024-11-27 20:18:52 瀏覽:502
藍鷗c語言 發布:2024-11-27 20:14:38 瀏覽:813