从具有SMO的数据库进行备份失败

本文关键字:备份 失败 数据库 SMO | 更新日期: 2024-09-21 16:14:50

使用SMO从SQL Server 2008 R2备份数据不起作用:

BACKUP DATABASE异常终止
来源=。Net SqlClient数据提供程序
错误代码=-2146232060
等级=16
行号=1
编号=3201
程序="
服务器=(本地)
状态=1

StackTrace:
InnerException:Microsoft。SqlServer。经营常见的ExecutionFailureException
消息=执行Transact-SQL语句或批处理时发生异常
来源=微软。SqlServer。ConnectionInfo

StackTrace:
在微软。SqlServer。经营常见的服务器连接。ExecuteNonQuery(字符串sqlCommand,ExecutionTypes executionType)
在微软。SqlServer。经营常见的服务器连接。ExecuteNonQuery(StringCollection sqlCommands,ExecutionTypes executionType)
在微软。SqlServer。经营烟雾。ExecutionManager。ExecuteNonQuery(StringCollection查询)
在微软。SqlServer。经营烟雾。BackupRestoreBase。ExecuteSql(服务器服务器,StringCollection查询)
在微软。SqlServer。经营烟雾。备份SqlBackup(服务器srv)

InnerException:系统。数据SqlClient。SqlException
在微软。SqlServer。经营常见的ConnectionManager。ExecuteTSql(ExecuteTSqlAction操作、Object execObject、DataSet fillDataSet、布尔catchException)
在微软。SqlServer。经营常见的服务器连接。ExecuteNonQuery(字符串sqlCommand,ExecutionTypes executionType)

我的代码:

class Backup_Restore 
{
    public string BackUpConString = @"Data Source=(local);Initial Catalog=taban;Integrated Security=True";
public string ReStoreConString = "Data Source=(local);Initial Catalog=master;Integrated Security=True";
    public void BackUpMyDB()
    {
        using (SqlConnection con = new SqlConnection(BackUpConString))
        {
            ServerConnection srvConn = new ServerConnection(con);
            Server srvr = new Server(srvConn);
            if (srvr != null)
            {
                try
                {
                    Backup bkpDatabase = new Backup();
                    bkpDatabase.Action = BackupActionType.Database;
                    bkpDatabase.Database = "taban";
                    SaveFileDialog sfd = new SaveFileDialog();
                    sfd.Filter = "BackUp File|*.taban";
                    sfd.FileName = "BackUp_" + (DateTime.Now.ToShortDateString().Replace('/', '.'));
                    if (sfd.ShowDialog() == DialogResult.OK)
                    {
                        BackupDeviceItem bkpDevice = new BackupDeviceItem(sfd.FileName, DeviceType.File);
                        bkpDatabase.Devices.Add(bkpDevice);
                        bkpDatabase.SqlBackup(srvr);
                        MessageBox.Show("Bakup of Database successfully created", "Server", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                catch (Exception e) { 
                    MessageBox.Show(e.ToString()); }
            }
        }
    }
       public void ReStorMyDB()
    {
        if (MessageBox.Show("All Data Stored in the Database may change!!! 'n If you agree, select '"Yes'".", "DataBase ReStore", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
        {
            SqlConnection.ClearAllPools();
            using (SqlConnection con = new SqlConnection(BackUpConString))
            {
                ServerConnection srvConn = new ServerConnection(con);
                Server srvr = new Server(srvConn);

                if (srvr != null)
                {
                    try
                    {
                        Restore rstDatabase = new Restore();
                        rstDatabase.Action = RestoreActionType.Database;
                        rstDatabase.Database = "taban";
                        OpenFileDialog opfd = new OpenFileDialog();
                        opfd.Filter = "BackUp File|*.taban";
                        if (opfd.ShowDialog() == DialogResult.OK)
                        {

                            BackupDeviceItem bkpDevice = new BackupDeviceItem(opfd.FileName, DeviceType.File);
                            rstDatabase.Devices.Add(bkpDevice);
                            rstDatabase.ReplaceDatabase = true;
                            rstDatabase.SqlRestore(srvr);
                            MessageBox.Show("Database succefully restored", "Server", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                    }
                    catch (Exception e)
                    {
                        MessageBox.Show("ERROR: An error ocurred while restoring the database", "Application Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
        }
    }

从具有SMO的数据库进行备份失败

我有了没有SMO问题的新方法

string _server=".'server_name";
string _database="database_name";
string _backUpFile="filefullpath";
string cmd= "Sqlcmd - E - S .''"+_server+" - Q'" BACKUP DATABASE ["+ _database + "] TO DISK = '"+backUpFile+"' '" ";
System.Diagnostics.Process.Start(cmd);