例如,我在數據庫的表上刪除了一條記錄,而我的數據庫是MS Aaccess。我可以參考的任何備份機制?所以當我需要回滾數據庫時,我只需從代碼中快速恢復它。如何通過代碼在c#中備份數據庫?
1
A
回答
0
我用下面的代碼來備份SQL Server數據庫:
using System;
using System.Collections.Generic;
using System.Data;
using System.Collections;
using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Smo;
using System.Text;
namespace Codeworks.SqlServer.BackupDatabase
{
public class BackupCore
{
public static void Execute(string instance, string database, string outputFile)
{
BackupDeviceItem bdi = new BackupDeviceItem(outputFile, DeviceType.File);
Backup bu = new Backup();
bu.Database = database;
bu.Devices.Add(bdi);
bu.Initialize = true;
// add percent complete and complete event handlers
bu.PercentComplete += new PercentCompleteEventHandler(Backup_PercentComplete);
bu.Complete +=new ServerMessageEventHandler(Backup_Complete);
Server server = new Server(instance);
bu.SqlBackup(server);
}
protected static void Backup_PercentComplete(object sender, PercentCompleteEventArgs e)
{
// Console.WriteLine(e.Percent + "% processed.");
}
protected static void Backup_Complete(object sender, ServerMessageEventArgs e)
{
Console.WriteLine(e.ToString());
}
}
}
你需要從MS管理庫正確的SQL Server版本,但這些都是可供下載。
2
0
如果你是你的數據庫的一個用戶,你只需要關閉連接和文件系統複製。
如果有多個用戶,那麼你應該使用不同的方法。如果你確實有可用的訪問,還有一個未公開的命令,這將使該表的備份一個Jet/ACE文件:
Application.SaveAsText 6, vbNullString, strTargetMDB
現在,因爲這隻能與數據庫的訪問UI開放來完成,它需要自動化Access並在CurrentDB上運行。下面是訪問中運行的實現:
Public Function CreateBackup(strMDBName As String, strBackupPath As String, _
Optional bolCompact As Boolean = False) As Boolean
On Error GoTo errHandler
Dim objAccess As Object
Dim strBackupMDB As String
Dim strCompactMDB As String
If Len(Dir(strBackupPath & "\*.*")) = 0 Then ' alternative: use File System Object for this
MkDir strBackupPath
End If
Set objAccess = New Access.Application
objAccess.Application.OpenCurrentDatabase strMDBName
strBackupMDB = "Backup" & Format(Now(), "YYYYMMDDhhnnss") & ".mdb"
Debug.Print strBackupPath & "\" & strBackupMDB
objAccess.Application.SaveAsText 6, vbNullString, strBackupPath & "\" & strBackupMDB
objAccess.Application.Quit
Set objAccess = Nothing
If bolCompact Then
strCompactMDB = strBackupPath & "\" & "c_" & strBackupMDB
Name strBackupPath & "\" & strBackupMDB As strCompactMDB
DBEngine.CompactDatabase strCompactMDB, strBackupPath & "\" & strBackupMDB
Kill strCompactMDB
End If
CreateBackup = (Len(Dir(strBackupPath & "\" & strBackupMDB)) > 0)
exitRoutine:
If Not (objAccess Is Nothing) Then
On Error Resume Next
objAccess.Application.Quit
On Error GoTo 0
Set objAccess = Nothing
End If
Exit Function
errHandler:
Select Case Err.Number
Case 75 ' Path/File access error -- tried to MkDir a folder that already exists
Resume Next
Case Else
MsgBox Err.Number & ": " & Err.Description, vbExclamation, "Error in CreateBackup()"
Resume exitRoutine
End Select
End Function
要運行在C#中,你不得不自動訪問,你可能不希望在訪問的依賴。
由於我在訪問專門的工作,這是我使用的方法,所以我從來沒有編程的更復雜的方法。
如果您對數據庫有獨佔訪問,你可以使用JRO CompactDatabase命令緊湊一個新的文件名,但如果你有獨佔訪問,您還可以使用文件系統。
因此,基本上,您可以選擇如何將數據表導出到備份數據庫。您可以使用DoCmd.TransferDatabase複製所有數據表,然後複製這些關係,或者可以創建一個空模板數據庫,並將每個表中的數據依次追加到模板的副本中(順序不會當然違反RI)。
無論這些聽起來一點也不凌亂對我來說,這就是爲什麼我用SaveAsText方法!但是如果我沒有運行Access,那麼另外兩種方法是值得的。
相關問題
- 1. 從.net通過代碼備份Oracle數據庫
- 2. 通過java代碼備份和恢復Hsqldb數據庫
- 3. 從代碼還原數據庫備份?
- 4. 備份mysql數據庫的Java代碼
- 5. SMO通過備份安裝數據庫
- 6. 如何通過C#代碼更改.mdb數據庫密碼?
- 7. 如何在wordpress中備份數據庫?
- 8. Tsql數據庫備份C#
- 9. 如何備份數據庫備份每天在SQL Server 2005中
- 10. 如何從TFS數據庫獲取代碼文件備份
- 11. 通過C#語句備份SQL Server數據庫
- 12. SQL Server 2008:如何通過查詢備份數據庫
- 13. 如何通過表備份mysql數據庫表用PHP
- 14. 如何通過C#代碼複製SQL Server 2008數據庫
- 15. 在我的Java數據庫備份代碼中的錯誤
- 16. 如何在Outlook中創建SQL Server數據備份文件通過C#代碼兼容格式
- 17. NHibernate不同數據庫備份在C#
- 18. 如何在VB.net中備份sql server 2005的數據庫使用代碼
- 19. 如何在批處理文件中通過pg_dump備份所有數據庫 - postgres
- 20. PHP代碼中FTP備份數據庫使用URL
- 21. 數據庫備份
- 22. 備份數據庫
- 23. 備份數據庫
- 24. 通過C#代碼使用SQL身份驗證創建數據庫
- 25. 通過腳本從SQL Server中的備份創建數據庫
- 26. 通過代碼複製數據庫
- 27. 通過VBA代碼在數據庫中調用SQL過程
- 28. 如何採取mysql數據庫備份在Mac OS通過命令提示符
- 29. 數據庫備份/恢復過程
- 30. 備份和恢復mysql數據庫c#
可能與您提到Access無關。我可以建議切換到一個合適的數據庫,而不是一些Office噱頭來存儲重要數據嗎? ;) – 2011-03-13 14:21:41
感謝您的回覆!欣賞它! :D – Donald 2011-03-13 14:56:13
數據庫是Jet或ACE,而不是MS Access,MS Access不是數據庫。你建議什麼其他數據庫是免費的,並默認安裝在Windows? – Fionnuala 2011-03-13 16:06:50