2012-01-13 112 views
0

我正在使用以下函数来备份使用SMO的SQL Server数据库..但备份失败...我不知道,为什么它失败...任何帮助表示赞赏。SMO数据库备份

Private Sub BackupSqlDatabase() 

    Dim conn As New ServerConnection("MONO-PC\SQLEXPRESS") ' -- set SQL server connection given the server name, user name and password 
    Dim oSQLServer As New Server(conn) '--create the SMO server object using connection 

    Dim OrigBackupPath As String = oSQLServer.Information.MasterDBPath.Replace("\DATA", "C:\Backup\DB_BACKUP_NAME.BAK") ' -- set the path where backup file will be stored 

    Dim bkDevItem As New BackupDeviceItem(OrigBackupPath, DeviceType.File) ' -- create SMO.Backupdevice object 

    With oBackup ' Set the backup object property 
     .Action = BackupActionType.Database 
     .Database = "LIC.MDF" 
     .Devices.Add(bkDevItem) 
     .Initialize = True 
     .Checksum = True 
     .ContinueAfterError = True 
     .Incremental = False 
     .LogTruncation = BackupTruncateLogType.Truncate 
     .SqlBackup(oSQLServer) ' backup SQL database 
    End With 

End Sub 
+1

您是否收到错误消息? – JNK 2012-01-13 16:15:41

+0

备份失败..有点......我没有管理工作室安装在我的电脑......是否是备份失败的原因? – 2012-01-13 16:17:52

+0

你不需要将连接设置为:'Dim conn As New ServerConnection(“MONO-PC \\ SQLEXPRESS”)'(两个反斜杠)? – 2012-01-13 16:18:18

回答

0

你使用的是什么版本的sql server?我正在使用我相信10.5(SQL Server 2008 R2服务包1)和SMO对象不支持。

现在我使用sql调用。

BACKUP DATABASE DBNAMEHERE TO DISK = 'destPath' WITH FORMAT 
+0

当我尝试它你的方式...我得到“登录失败错误” – 2012-01-13 16:27:48

+0

'私人小键Button1_Click(ByVal发件人为System.Object,ByVal e为System.EventArgs)处理ButtonBackup.Click 'TextBoxBackupDirectory.Text = Application.UserAppDataPath ' BackupSqlDatabase() 昏暗CON作为SqlConnection的 昏暗CMD作为的SqlCommand CON =新的SqlConnection(“数据源= \ SQLEXPRESS;初始目录= LIC; Trusted_Connection =是“) cmd =新的SqlCommand(”BACKUP DATABASE LIC to disk ='C:\ Backup \ ICLS.bak'“,con) con.Open() cmd.ExecuteNonQuery() con.Close() MsgBox(“LI”) End Sub' – 2012-01-13 16:28:13

+0

您可能需要为用户提供更多数据库权限。为了测试,允许完全控制,然后禁用每个权利,直到它不再有效。对不起,我不知道用户需要的确切权限,但这应该有助于您了解未来如何研究这些问题。 – JeremyK 2012-01-14 02:35:27