上网也查过了一些代码,如:
private void Button3_Click(object sender, System.EventArgs e)
{
//引用SQLDMO.dll,SQLDMO由Microsoft SQL Server自带的SQLDMO.dll提供,SQLDMO.dll是一个COM对象
SQLDMO.Backup backup=new SQLDMO.BackupClass();
SQLDMO.SQLServer sqlserver=new SQLDMO.SQLServerClass();
sqlserver.LoginSecure=false;
sqlserver.Connect("localhost","sa","1");
backup.Action=SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
backup.Database="userdb";
backup.Files=@"E:\Project\meng\data\userdb.bak";
backup.BackupSetName="userdb";
backup.BackupSetDescription="数据库备份";
backup.Initialize=true;
backup.SQLBackup(sqlserver);
}
不知道上面的代码是否能实现?
但上面所说到的SQLDMO.DLL这怎么引用啊?在电脑上搜索到了这个文件了,并添加到了BIN目录下,但没用。
private void Button3_Click(object sender, System.EventArgs e)
{
//引用SQLDMO.dll,SQLDMO由Microsoft SQL Server自带的SQLDMO.dll提供,SQLDMO.dll是一个COM对象
SQLDMO.Backup backup=new SQLDMO.BackupClass();
SQLDMO.SQLServer sqlserver=new SQLDMO.SQLServerClass();
sqlserver.LoginSecure=false;
sqlserver.Connect("localhost","sa","1");
backup.Action=SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
backup.Database="userdb";
backup.Files=@"E:\Project\meng\data\userdb.bak";
backup.BackupSetName="userdb";
backup.BackupSetDescription="数据库备份";
backup.Initialize=true;
backup.SQLBackup(sqlserver);
}
不知道上面的代码是否能实现?
但上面所说到的SQLDMO.DLL这怎么引用啊?在电脑上搜索到了这个文件了,并添加到了BIN目录下,但没用。
代码如下:
protected void Button1_Click(object sender, EventArgs e)
{
SqlConnection con=SqlHelper.SqlHelper.create_open();
con.Open();
SQLDMO.Backup backup = new SQLDMO.BackupClass();
SQLDMO.SQLServer sqlserver = new SQLDMO.SQLServerClass();
sqlserver.LoginSecure = false;
sqlserver.Connect("127.0.0.1", "sa", "");
backup.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
backup.Database = System.Web.HttpContext.Current.Server.MapPath("~//App_Data//OA_Data.MDF"); ;
backup.Files = @"D:\OA\App_Data\OA.bak";
backup.BackupSetName = "OA";
backup.BackupSetDescription = "数据库备份";
backup.Initialize = true;
backup.SQLBackup(sqlserver);
con.Close();
message.showmessage("备份成功!");
}但老出现错误:[Microsoft][ODBC SQL Server Driver][SQL Server]未能在 sysdatabases 中找到数据库 'd:\OA\App_Data\OA_Data.MDF' 所对应的条目。没有找到具有该名称的条目。请确保正确地输入了名称。
[Microsoft][ODBC SQL Server Driver][SQL Server]BACKUP DATABASE 操作异常终止。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Runtime.InteropServices.COMException: [Microsoft][ODBC SQL Server Driver][SQL Server]未能在 sysdatabases 中找到数据库 'd:\OA\App_Data\OA_Data.MDF' 所对应的条目。没有找到具有该名称的条目。请确保正确地输入了名称。
[Microsoft][ODBC SQL Server Driver][SQL Server]BACKUP DATABASE 操作异常终止。源错误:
行 33: backup.BackupSetDescription = "数据库备份";
行 34: backup.Initialize = true;
行 35: backup.SQLBackup(sqlserver);
行 36: con.Close();
行 37: message.showmessage("备份成功!");
但路径没问题呀。
提示这里出问题拉
System.Web.HttpContext.Current.Server.MapPath("~//App_Data//OA_Data.MDF"); ;
你跟踪一下啦
public static void DbBackup()
{
SQLDMO.Backup oBackup = new SQLDMO.BackupClass();
SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();
try
{
oSQLServer.LoginSecure = false;
oSQLServer.Connect("localhost", "sa", "123456");
oBackup.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
oBackup.Database = "Northwind";
oBackup.Files = @"d:\Northwind.bak";
oBackup.BackupSetName = "Northwind";
oBackup.BackupSetDescription = "数据库备份";
oBackup.Initialize = true;
oBackup.SQLBackup(oSQLServer);
}
catch
{
throw;
}
finally
{
oSQLServer.DisConnect();
}
}
{
string path = pathTextBox.Text;
string dbname = dbDropDownList.SelectedValue; string backupSql = "use master;";
backupSql += "backup database @dbname to disk = @path;";
SqlCommand myCommand = new SqlCommand(backupSql, new SqlConnection(ConnStr)); myCommand.Parameters.Add("@dbname", SqlDbType.Char);
myCommand.Parameters["@dbname"].Value = dbname;
myCommand.Parameters.Add("@path", SqlDbType.Char);
myCommand.Parameters["@path"].Value = path; try
{
myCommand.Connection.Open();
myCommand.ExecuteNonQuery();
infoLabel.Text = "备份成功";
}
catch(Exception ex)
{
infoLabel.Text = "备份失败<br>" + ex.ToString();
}
finally
{
myCommand.Connection.Close();
}
}
void restoreButton_Click(object sender, System.EventArgs e)
{
string path = pathTextBox.Text;
string dbname = dbDropDownList.SelectedValue; string restoreSql = "use master;";
restoreSql += "restore database @dbname from disk = @path;"; SqlCommand myCommand = new SqlCommand(restoreSql, new SqlConnection(ConnStr)); myCommand.Parameters.Add("@dbname", SqlDbType.Char);
myCommand.Parameters["@dbname"].Value = dbname;
myCommand.Parameters.Add("@path", SqlDbType.Char);
myCommand.Parameters["@path"].Value = path; try
{
myCommand.Connection.Open();
myCommand.ExecuteNonQuery();
infoLabel.Text = "恢复成功";
}
catch(Exception ex)
{
infoLabel.Text = "恢复失败<br>" + ex.ToString();
}
finally
{
myCommand.Connection.Close();
}
}
未能找到 ID 为 9,名称为 'OA' 的数据库表。
Could not find database table ID 9, name 'OA'.
已将数据库上下文改为 'master'。
这怎么修改啊???
我用了一个FileUpload去找呀备份的数据库
//dbDropDownList绑定的是可以还原和备份的数据库列表!
我用了一个FileUpload去找呀备份的数据库?是什么意思?
我用FileUpload去找数据库啊