PDA

View Full Version : حرفه ای: مشکل من بکاپ گیری از دیتا بیس با سیشارپ در حالت sqlExpress است



ali it
یک شنبه 30 شهریور 1393, 19:47 عصر
با سلام خدمت اساتید بزرگوار
من با استفاده از تابع زیر از دیتابیسی که به صورت sqlexpress نصب خواهد شد می خواهم بکاپ بگیرم ولی بعد از نصب در سیستم هدف نه بکاپ میگیره و نه ارور میده هیچ تاثیری نمیذاره

public static void backup2(string FileName, string DataBaseName)
{
string DevicePath = null;
DevicePath = FileName;
using (conn)
{

conn.Close();
conn.Open();
ServerConnection Srvcon = new ServerConnection(conn);
Server Srv = new Server(Srvcon);
// Create backup device item for the backup
BackupDeviceItem bdi = new BackupDeviceItem(DevicePath, DeviceType.File);
// Create the backup informaton
Microsoft.SqlServer.Management.Smo.Backup Backup = new Microsoft.SqlServer.Management.Smo.Backup();
Backup.Devices.Add(bdi);
var _with1 = Backup;
//Type Of Backup
_with1.Action = BackupActionType.Database;
_with1.BackupSetDescription = "Backup DataBase";
_with1.BackupSetName = DataBaseName;
_with1.Database = conn.Database.ToString();
_with1.LogTruncation = BackupTruncateLogType.Truncate;
//Backup.ExpirationDate = New DateTime(2007, 5, 1)
// Run the backup
_with1.SqlBackup(Srv);
conn.Close();

}


}
در کلیک botton مورد نظر هم اطلاعات زیر را وارد کرده ام

private void button1_Click(object sender, EventArgs e)
{
saveFileDialog1.Filter = "DateBase Backup File(*.bak)|*.bak";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
string address = saveFileDialog1.FileName;
dbcommand.setconnectionstring();

dbcommand.backup2(address, "pooshak");
MessageBox.Show("پشتبان گیری به طور کامل از اطلاعات شما انجام شد لطفا اطلاعات پشتیبان را در خارج از کامپیوتر در جای امن نگه دارید", "avan آسان و مطمعن", MessageBoxButtons.OK);

البته namespaceهایی که استفاده کرده ام
using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Smo;
هستند
sql 2005 هستش و مجبورم با این کانکشن وصل شوم (برنامه در سمت مشتری نصب خواهد شد)
conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=" + Application.StartupPath + @"\pooshak.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");

لطفا راهنماییم کنید الان پروژم دو روزه الکی خوابیده فقط بکاپ مونده تا کارم تموم بشه همه جای سایتم گشتم ولی نتیجه نگرفتم خیلی ممنون:خجالت:

Mr.Csharp
یک شنبه 30 شهریور 1393, 20:06 عصر
سلام دوست عزیز
من از این دستور زیر استفاده می کنم

خودت دیگه زحمت تغییرات نام دیتابیسش رو بکش:لبخند:
using System.Data.SqlClient;
try
{
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
btnback.Enabled = false;
btnrestore.Enabled = false;
string command = @"BACKUP DATABASE [" + Application.StartupPath + "\\libdb.mdf] TO DISK = N'" + saveFileDialog1.FileName + "' WITH FORMAT, INIT, NAME = N'accounting-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10";
this.Cursor = Cursors.WaitCursor;
SqlConnection objconnection = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\libdb.mdf;Integrated Security=True;User Instance=True");
SqlCommand oCommand = null;
if (objconnection.State != ConnectionState.Open)
objconnection.Open();
oCommand = new SqlCommand(command, objconnection);
oCommand.ExecuteNonQuery();
this.Cursor = Cursors.Default;
objconnection.Close();
btnback.Enabled = true;
btnrestore.Enabled = true;
MessageBox.Show("فایل پشتیبان ذخیره شد", "اعلان");
oCommand.Dispose();

}
}
catch { }