PDA

View Full Version : حرفه ای: Backup AND Restore دیتابیس تحت وب توسط C# و کد های تحت ویندوز اپلیکیشن



NasimBamdad
یک شنبه 24 اسفند 1393, 14:01 عصر
سلام و خسته نباشید

یک نرم افزار تحت ویندوز داریم که دیتابیسش رو روی یک هاست ویندوز هست و SQL Server 2014 . حالا اگه بخواهیم از Windows Application دیتابیس تحت اینترنت رو Backup بگیریم یا Restore کنیم ، امکانش هست ؟

m.khani_121
یک شنبه 24 اسفند 1393, 14:37 عصر
سلام
تکنیک SMO رو جستجو کنید .

Mr.Csharp
یک شنبه 24 اسفند 1393, 15:34 عصر
سلام
تکنیک SMO رو جستجو کنید .
این روش بک اپ گیری به روش smo هستش و طبق عکس رفرنس هایی که تو کادر قرار گرفتن رو باید به برنامه اضافه کنین
مسیر رفرنس ها : C:\Program files \ microsoft sql server \ 100 \ sdk \ assemblies

http://8pic.ir/images/en8f7i0f95jkalc9bam2.jpg

و بعد این کد رو بنویسید :
using Microsoft.SqlServer.Management;
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;


namespace School
{
class Backup_Restore
{
string conbakup = @"Data Source=(LocalDB)\v11.0;attachdbfilename=|DataDirec tory|\School.mdf;initial catalog=School;integrated security=True;multipleactiveresultsets=True";
string conrestore = @"Data Source=(LocalDB)\v11.0;Integrated Security=True;multipleactiveresultsets=True";


public void Restordb()
{
SqlConnection.ClearAllPools();
using (SqlConnection con = new SqlConnection(conrestore))
{
ServerConnection srvConn = new ServerConnection(con);
Server srvr = new Server(srvConn);

if (srvr != null)
{
try
{
Restore restoredb = new Restore();
restoredb.Action = RestoreActionType.Database;
restoredb.Database = "Name Database";
OpenFileDialog openfd = new OpenFileDialog();
openfd.Filter = "Backup File (*.Bak)|*.Bak";

Nullable<bool> result = openfd.ShowDialog();
if (result == true)
{
BackupDeviceItem bkpDevice = new BackupDeviceItem(openfd.FileName, DeviceType.File);

restoredb.Devices.Add(bkpDevice);
restoredb.ReplaceDatabase = true;
restoredb.SqlRestore(srvr);

}
}
catch ()
{

}
}
}
}


public void Backupdb()
{
using (SqlConnection con = new SqlConnection(conbakup))
{
ServerConnection srvConn = new ServerConnection(con);
Server srvr = new Server(srvConn);

if (srvr != null)
{
try
{
Backup backupdb = new Backup();
backupdb.Action = BackupActionType.Database;
backupdb.Database = "Name Database";
SaveFileDialog savefd = new SaveFileDialog();
savefd.Filter = "Backup File (*.Bak)|*.Bak";
savefd.FileName = DateTime.Now.ToString("ddMMyyyy_HHmmss");
Nullable<bool> result = savefd.ShowDialog();
if (result == true)
{
BackupDeviceItem bkpDevice = new BackupDeviceItem(savefd.FileName, DeviceType.File);
backupdb.Devices.Add(bkpDevice);
backupdb.SqlBackup(srvr);

}
}
catch
{

}
}

}
}
}
}

NasimBamdad
سه شنبه 26 اسفند 1393, 10:15 صبح
ببینید ، مثلا من می خوام از DataBase روی سرور اینترنت از Windows Application بک آپ بگیرم .، اما متاسفانه نمیشه فایل رو Save می کنم ولی کار نمی کنه

NasimBamdad
سه شنبه 26 اسفند 1393, 13:29 عصر
من از این کد استفاده می کنم ولی متاسفانه میگه Backup Server '198.22.22.2,1433 Failed


string conbackup = "Data Source=185.55.22.112,1433;Initial Catalog=DBNAME;User ID = DB_UNAME; Password = DBPASS";
using (SqlConnection con = new SqlConnection(conbackup))
{
ServerConnection srvConn = new ServerConnection(con);
Server srvr = new Server(srvConn);


if (srvr != null)
{
try
{
Backup backupdb = new Backup();
backupdb.Action = BackupActionType.Database;
backupdb.Database = "DBNAME";
SaveFileDialog savefd = new SaveFileDialog();
savefd.Filter = "Backup File (*.Bak)|*.Bak";
savefd.FileName = DateTime.Now.ToString("ddMMyyyy_HHmmss");
bool result = Convert.ToBoolean(savefd.ShowDialog());


if (result)
{
BackupDeviceItem bkpDevice = new BackupDeviceItem(savefd.FileName, DeviceType.File);
backupdb.Devices.Add(bkpDevice);
backupdb.SqlBackup(srvr);


}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}


}

NasimBamdad
سه شنبه 26 اسفند 1393, 13:43 عصر
کدی که زحمت کشیدید برای دیتابیس لوکال جواب میده . ، اما برای دیتابیس که روی اینترنت هست جواب نمیده