PDA

View Full Version : خطا در restore با SQLDMO



amirj00n_001
دوشنبه 26 بهمن 1388, 21:11 عصر
من برای restore کردن بانک از کدهای زیر استفاده می کنم .در هنگام restore کردن هیچ اتصالی با بانک وجود ندارد .اما خطای زیر را میدهد.(در عکس زیر ضمیمه کردم).


برای restore

SQLServer2 Server = new SQLDMO.SQLServer2();
Restore2 Restore = new SQLDMO.Restore2();
Server.LoginSecure = true;
Server.Connect(".", Missing.Value,Missing.Value);
MessageBox.Show("سرور: " + Server.Name);
Database2 Database = (SQLDMO.Database2)Server.Databases.Item("test", Missing.Value);
MessageBox.Show(" بانک اطللاعاتی :" + Database.Name);
Restore.Database = Database.Name;
Restore.Files = @"g:\test.bak";
//Server.KillDatabase(Database.Name);
Restore.SQLRestore(Server);
Server.DisConnect();
Restore = null;
Server = null;
MessageBox.Show("بازیابی اطلاعات با موفقیت انجام شد! ");
}



برای backup

SQLServer2 Server = new SQLDMO.SQLServer2();
Backup2 Backup = new SQLDMO.Backup2();
Server.LoginSecure = true;
Server.Connect(".", "sa", "");
MessageBox.Show("سرور : " + Server.Name);
Database2 Database = (SQLDMO.Database2)Server.Databases.Item("test",Missing.Value);
MessageBox.Show(" بانک اطلاعاتی :" + Database.Name);
Backup.Database = Database.Name;
//saveFileDialog1.ShowDialog();
//Backup.Files = saveFileDialog1.FileName;
Backup.Files =@"g:\test.bak" ;
Backup.SQLBackup(Server);
Server.DisConnect();
Backup = null;
Server = null;
MessageBox.Show("عملیات پشتیبانی اطلاعات با موفقیت انجام شد ! ");
}
catch (Exception err)
{
this.Cursor = Cursors.Default;
MessageBox.Show(err.Message, "Error");
}

beh_develop
سه شنبه 27 بهمن 1388, 06:34 صبح
من قبلا از DMO برای backup و restore کردن دیتابیس استفاده کردم ولی مشکلی نداده ،

پیشنهاد میدم از SMO استفاده کنین که خیلی راحت تره :




Server srv = new Server(new Microsoft.SqlServer.Management.Common.ServerConnec tion("MyServerName"));
Restore rst = new Restore();
rst.PercentCompleteNotification = 1;
rst.PercentComplete += new PercentCompleteEventHandler(rst_PercentComplete);
rst.Complete += new Microsoft.SqlServer.Management.Common.ServerMessag eEventHandler(rst_Complete);

RelocateFile reloData = new RelocateFile("mydb_Data", @"d:\newDb.mdf");
RelocateFile reloLog = new RelocateFile("mydb_Log", @"d:\newDb_log.ldf");

rst.Action = RestoreActionType.Database;
rst.Database = "newDb";
rst.Devices.AddDevice(@"d:\mydb_Data.bak", DeviceType.File); rst.RelocateFiles.Add(reloData);
rst.RelocateFiles.Add(reloLog);
rst.ReplaceDatabase = true;
rst.SqlRestore(srv);


برای استفاده از SMO کافیه Microsoft.SqlServer.ConnectionInfo و Microsoft.SqlServer.Smo رو به Reference های برنامه اضافه کنین.