PDA

View Full Version : سوال: خطا failed for server در بک اپ گیری با روش SMO



vB.N3T
جمعه 14 اسفند 1394, 13:18 عصر
با تشکر از مدیران و درخواست دارم این تاپیک رو حذف نکنن من تمام تاپیک های مشابه رو برسی کردم و به نتیجه نرسیدم

سلام دوستان من میخام از دیتابیس express با روش SMO بک اپ بگیرم ولی با این خطا رو به رو میشم

(بعد از زدن این تاپیک به این نکته رسیدم و پست اول ویرایش میکنم)


من از نسخه EXPRESS خود ویژوال استفاده کردم
این کد های که قرار دادم میره به نسخه کامل SQL SERVER که روی سیستمم نصب شده و اونجا دنبال دیتابیسی ک توی کد هست میگرده
به خاطر همین میگه دیتابیسی با این نام پیدا نشد...
چیکار باید کنم که کانکشن استرینک به بانکی که در نسخه EXPRESS هست بره و بک اپ رو بگیره



اینم کل کد های کلاس بک اپ و ریستور

namespace Farmer //bayad ba tavajoh be "namespace" barname, tanzim shavad
{
class Backup_Restore : IDisposable
{
private string BackUpConString = @"data source=.\\SQLEXPRESS;initial catalog=Database1;integrated security=True";//Connection String baraye Dastyabi be Data base Asli
private string ReStoreConString = @"Data Source=.\SQLEXPRESS;Initial Catalog=master;Integrated Security=True";//Connection String baraye dastresi be data base Master


//------------------------------------------------------------

public void Dispose()
{
GC.SuppressFinalize(this);
}



//-------------------------------------------------------------
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(ReStoreConString))
{
ServerConnection srvConn = new ServerConnection(con);
Server srvr = new Server(srvConn);

if (srvr != null)
{
try
{

Restore rstDatabase = new Restore();
rstDatabase.Action = RestoreActionType.Database;
rstDatabase.Database = "Database1";//Bayad ham nam ba Data base barname tanzim shavad
OpenFileDialog opfd = new OpenFileDialog();
opfd.Filter = "BackUp File|*.araDB";
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);
}
}
}

}
}

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 = "Database1";//Bayad ham nam ba Data base barname tanzim shavad
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "BackUp File|*.araDB";
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()); }
}
}
}


}
}

و اینم کانکشن من در فایل app.config

connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Database1.mdf;Integrated Security=True;User Instance=True"

ممنون میشم راهنمایی کنید

rezashaban
جمعه 14 اسفند 1394, 13:36 عصر
سلام دوست من
این خط کدی که گذاشتی برای کانکشن استرینگ ریستور اشتباه آدرس دادی(قسمت زیر خط دار):


privatestringBackUpConString = @"data source=.\\SQLEXPRESS;initial catalog=Database1;integrated security=True";//Connection String baraye Dastyabi be Data base Asli

در ضمن مابقی کانشکنت رو هم بررسی کن

vB.N3T
جمعه 14 اسفند 1394, 13:45 عصر
من فقط متد بک اپ رو صدا میزنم

private void button1_Click(object sender, EventArgs e)
{
using (Backup_Restore bak = new Backup_Restore())
{
bak.BackUpMyDB();

}
}

ینی اگر کل کد های ریستور هم حذف کنیم بازم این خطا رو میده. خطا lofin failed

rezashaban
جمعه 14 اسفند 1394, 14:00 عصر
خب برای بک آپ گرفتن داری از همین کانکشن استرینگ استفاده میکنی که توی پست قبلی گفتم بهت

vB.N3T
جمعه 14 اسفند 1394, 14:07 عصر
دوستان وقتی هم کانکشن استرینگ فایل app.config رو میزارم بازم این خطا رو میده

ینی کانکشن متد بک اپ به این صورت میشه

private string BackUpConString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Database1.mdf;Integrated Security=True;User Instance=True";

و خطا هم اینع139426

مگه وقتی کانکشن استرینگ رو گذاشتیم @"Data Source=.\SQLEXPRESS; نباید اجرا بشه
چرا خطا به نام سرور خطا میده..نام کامپیوترمم ALI-PCهست که در این خطا اومده

اینم عکس کانکشن استرینگ خود دیتابیس

rezashaban
جمعه 14 اسفند 1394, 14:12 عصر
دوست من
این میگه دیتابیسی به نام Database1 نیست که بخواد ازش بک آپ بگیره
شما قبل اینکه بک آپ بگیری ببین اصلا کانکشنت وصل میشه؟

vB.N3T
جمعه 14 اسفند 1394, 14:20 عصر
بله دیتابیس Database1.mdf وجود داره طبق عکس بالا..مشکل هرجی هست از اون جایی هست که دورش خط کشیدم.

rezashaban
جمعه 14 اسفند 1394, 14:26 عصر
خب کانکشنت رو تست کردی ببینی وصل میشه یا نه؟ اصلا داخل بقیه فرم های برنامه ت به همین دیتابیس وصل میشی و باهاش کار میکنی و هیچ مشکلی نداره؟
مطمئن باش ایراد از همین کانکشن استرینگت هستش؛ یه جاییش رو داری اشتباه میکنی...بیشتر دقت کن

vB.N3T
جمعه 14 اسفند 1394, 14:33 عصر
بله تمام فرم ها با هیمن دیتا بیس کار میکنن و مشکلی در برنامه نیست..مشکل از اون قسمت هست که مشخص کردم. اونجایی که
ALI-PC اومده..در فیلم اموزشی کانکش استرینگ به این صورت هست

private string BackUpConString = @"data source=.;initial catalog=Database1;integrated security=True;multipleactiveresultsets=True";/

ولی این هم میزارم خطا میده..login failed for ALI-PC مشکل در همینجاس که نمیتونه لاگین شه

دوستان یه نکته ای متوجه شدم
من از نسخه EXPRESS خود ویژوال استفاده کردم

این کد های که قرار دادم میره به نسخه کامل SQL SERVER که روی سیستمم نصب شده و اونجا دنبال دیتابیسی ک توی کد هست میگرده
چیکار باید کنم که بک اپ از EXPRESS خود ویژوال بگیره

rezashaban
جمعه 14 اسفند 1394, 14:42 عصر
این یه نمونه برنامه با سی شارپ هستش میتونی ازش کمک بگیری:
http://midnightprogrammer.net/post/backuprestore-sql-database-using-c
این هم نمونه کد داره میتونی نگاه کنی:
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/95750bdf-fcb1-45bf-9247-d7c0e1b9c8d2/how-do-you-backup-a-database-using-sql-server-2005-express?forum=sqlexpress