2011-08-28 82 views
0

恢復SQL數據庫,我不能創建保存在位置數據庫的備份一樣C:\database\mydb.mdf備份通過AttachDBFilename

錯誤:無法創建一個備份

 Backup sqlBackup = new Backup(); 

     sqlBackup.Action = BackupActionType.Database; 
     sqlBackup.BackupSetDescription = "ArchiveDataBase:" + 
             DateTime.Now.ToShortDateString(); 
     sqlBackup.BackupSetName = "Archive"; 

     sqlBackup.Database = databaseName; 

     BackupDeviceItem deviceItem = new BackupDeviceItem(destinationPath, DeviceType.File); 
     //ServerConnection connection = new ServerConnection(serverName, userName, password); 
     ServerConnection connection = new ServerConnection(serverName); 

     Server sqlServer = new Server(connection); 

     Database db = sqlServer.Databases[databaseName]; 

     sqlBackup.Initialize = true; 
     sqlBackup.Checksum = true; 
     sqlBackup.ContinueAfterError = true; 

     sqlBackup.Devices.Add(deviceItem); 
     sqlBackup.Incremental = false; 

     sqlBackup.ExpirationDate = DateTime.Now.AddDays(3); 
     sqlBackup.LogTruncation = BackupTruncateLogType.Truncate; 

     sqlBackup.FormatMedia = false; 

     sqlBackup.SqlBackup(sqlServer); 

string dataBaseName = @"C:\database\mydb.mdf";  
string serverName = @"Data Source=.\SQLEXPRESS;Integrated Security=True;User Instance=True";  
string destinationPath = "C:\\mydb.bak";  

也許我路過錯誤的變量?

請任何人都可以驗證它,並張貼了我正確的解決方案

日Thnx提前。

PS:數據庫沒有密碼保護,可以使用混合身份驗證

+0

hey marc_s它仍然給出這樣的錯誤:無法連接到服務器數據源=。\ SQLEXPRESS;集成安全性= True;用戶實例= True。 – j4m4l

+0

在'Database db = sqlServer.Databases [databaseName]'處引發錯誤;' – j4m4l

+0

是的 - 顯然 - 這是一個完全錯誤的連接字符串 - 它既不是一個基於服務器的數據庫的有效連接字符串,也不是一個「附加MDF」數據庫場景完成....看到我的迴應 –

回答

0

首先的 - 我猜你的一些參數是錯誤的:

ServerConnection connection = new ServerConnection(serverName); 

在這裏,你需要通過只是服務器名稱 - 所以在你的情況下,不要發送你的整個連接字符串 - 只需.\SQLExpress

至於你的數據庫名稱 - 我不知道你是否可以使用SMO備份SQ中「附加」的MDF文件L服務器 - 通常,當服務器上的數據庫爲時,這將是數據庫名稱(數據庫的名稱只有 - 沒有文件名,沒有擴展名)。

string dataBaseName = @"C:\database\mydb.mdf";  

所以在這裏我的建議是:

  • 將這個附加MDF文件到您的SQL Server實例(您已安裝反正)
  • 給它一個有意義的名字,例如mydb
  • 然後使用只是數據庫名稱爲你的價值在這裏:

    string dataBaseName = "mydb";  
    

有了這些點,你的代碼做的工作就好了我的情況,至少...

+0

但我將如何附加它? – j4m4l

+0

@ j4m4l:使用[SQL Server Mgmt Studio Express](http://msdn.microsoft.com/en-us/library/ms365247.aspx)(從MS免費下載)將MDF附加到您的服務器 –

+0

但我想在運行時做什麼? – j4m4l