PDA

View Full Version : مشکل در SQLEXPRESS Backup



Sajjad.Aghapour
یک شنبه 06 مرداد 1387, 23:44 عصر
سلام دوستان....
من عین این سوال رو در بخش پایگاه داده مطرح کردم ولی کسی جواب نداد.....اگه دوستان این تالار می تونن کمک کنن....
من توی backup گیری از بانک اطلاعاتیم که از نوع express هست مشکل دارم.نمی دونم چکار کنم....



backup database C:\Document and Settings\...\database1.mdf to disk='c:\database.bak'

البته کدهای من در اصل اینطوریه



"backup database "+Application.StartupPath+"\database1.mdf to disk='c:\database.bak'


ولی هر موقع اون رو اجرا می کنم خطای زیر رو میده...




Incorrect Syntax near 'C:'

razavi_university
دوشنبه 07 مرداد 1387, 00:15 صبح
چک نکردم ولی باید تویه رشته واسه / دو تا بگذاری یعنی // یا یه @ اول رشته(قبل از " شروع آن) بگذارین

Sajjad.Aghapour
دوشنبه 07 مرداد 1387, 00:35 صبح
ممنون.ولی به آدرس دیتابیس گیر میده.یعنی اگه کد زیر رو بذاری..


@"BACKUP DATABASE E:\Database1.mdf TO DISK='E:\sa.bak'"

خطا میده..


Incorrect Syntax near 'E:'

نمی دونم چکار کنم.با backup گیری روی local هیچ مشکلی نداره ولی با express گیر داره.....

egoldashraf
دوشنبه 07 مرداد 1387, 09:54 صبح
try
{
this.Cursor = Cursors.WaitCursor;

SqlCommand cmd = new SqlCommand("EXEC sp_helpdb", DataEngine.Connection);

string dbname = cmd.ExecuteScalar().ToString();

cmd = new SqlCommand("BACKUP DATABASE \"" + dbname + "\" TO DISK='" + txtbackUp.Text + "\\backup " + DataEngine.CurrentDate().Replace("/", "-") + ".bak" + "';", DataEngine.Connection);

cmd.ExecuteNonQuery();

this.Cursor = Cursors.Default;

MessageBox.Show("پشتیبان گیری با موفقیت انجام شد");
}

catch (Exception ex)
{
this.Cursor = Cursors.Default;

MessageBox.Show("error : " + ex.Message);
}

jaza_sa
دوشنبه 07 مرداد 1387, 15:01 عصر
Backup

string strBackup = "BACKUP DATABASE {0} TO DISK = '{1}' WITH FORMAT";
strBackup = string.Format(strBackup, dbName, path);Restore

string strRestore= "USE master; RESTORE DATABASE [{0}] FROM DISK = '{1}' WITH REPLACE;";
strRestore = string.Format(strRestore, dbName, path);درضمن باید بدونید که نسخه Express از امکانات Backup , Restore برخوردار نیست (بنا به گزارش ماکروسافت)
و برای حل این مشکل میتونید فایل های دیتابیس رو در یک پوشه دیگه کپی کنید...

Sajjad.Aghapour
دوشنبه 07 مرداد 1387, 23:43 عصر
دوستان ممنون.ولی هر کاری می کنم شدنی نیست.اگه یه نمونه بذارید ممنون میشم.کلافه شدم از بس راههای مختلف رو امتحان کردم...

jaza_sa
سه شنبه 08 مرداد 1387, 09:29 صبح
باید دقت کنید که در هر مسیری نمیتونید عملیات Backup , Restore انجام بدید.
باید یک مسیر ساده مثل ، C:\MyProjectFiles یا چیزی شبیه به این باشه.
آخه منم همچین مشکلی داشتم ولی وقتی مسیر فایل رو همچین چیزی قرار دادم مشکلم برطرف شد.

Sajjad.Aghapour
سه شنبه 08 مرداد 1387, 17:58 عصر
مگه فرقی هم میکنه.کدهای منو ببینید...


SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDBFileName=|datadirector y|database1.mdf;Integrated Security=true;Connect Timeout=30;User Instance=True");
SqlCommand cmd = new SqlCommand();

string strBackup = @"backup database {0} to disk='{1}' with format";
strBackup = string.Format(strBackup, "D:\\database1.mdf", "C:\\SQLserverBackups\\DBbackup.bak");
cmd.CommandText = strBackup;
cmd.Connection = conn;


conn.Open();
cmd.ExecuteNonQuery();
conn.Close();

این هم خطا


Incorrect syntax near 'D:'.
Incorrect syntax near the keyword 'with'. If this statement is a common table expression or an xmlnamespaces clause, the previous statement must be terminated with a semicolon.

اون خط اولی که همیشه هست.اگه :D رو هم بردارم بازم خطا میده ...


Incorrect syntax near'.'.

حالا چرا نمیدونم.توی msdn هم گشتی زدم.ولی متاسفانه چیزی پیدا نکردم.....

hdv212
پنج شنبه 10 مرداد 1387, 00:03 صبح
ظاهرا دستور شما مشکلی نداره، هر مشکلی هست از پاس کردن پارامترها و گذاشتن گیومه و پرانتز و .... هست، به هر صورت فکر میکنم این نمونه کد برای Backup گیری کمکتون کنه، در این مواقع سعی کنید با پارامترها کار کنید :

string strCon = "data Source=.;initial catalog=mydb;trusted_connection=true;";
using (SqlConnection con = new SqlConnection(strCon))
{
SqlCommand cmd = new SqlCommand("backup database mydb to disk = @x with format", con);
cmd.Parameters.AddWithValue("@x", @"C:\backupTest\test.bak");
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
موفق باشید

Sajjad.Aghapour
پنج شنبه 10 مرداد 1387, 12:00 عصر
جناب وزیری ممنون.....
ConnetionString شما رو به این گونه اصلاح کردم درست شد(اگه دوستان خواستن استفاده کنن).....


string strConn = @"data source=.\SQLEXPRESS;attachdbfilename=|datadirector y|mydb.mdf;"+
"initial catalog=mydb;integrated security=true;connect timeout=30;user instance=true";

خانم گل
شنبه 23 شهریور 1387, 15:41 عصر
جناب وزیری ممنون.....
ConnetionString شما رو به این گونه اصلاح کردم درست شد(اگه دوستان خواستن استفاده کنن).....


string strConn = @"data source=.\SQLEXPRESS;attachdbfilename=|datadirector y|mydb.mdf;"+
"initial catalog=mydb;integrated security=true;connect timeout=30;user instance=true";

سلام. من هر كاري مي كنم مشكلم حل نميشه. دقيقا eror قبلي شما رو ميده. ميشه كدتون رو بذاريد اينجا.

Sajjad.Aghapour
شنبه 23 شهریور 1387, 17:26 عصر
string strConn = @"data source=.\SQLEXPRESS;attachdbfilename=|datadirector y|DatabaseExample.mdf;" +
"initial catalog=DatabaseExample;integrated security=true;connect timeout=30;user instance=true";
using (SqlConnection con = new SqlConnection(strConn))
{
SqlCommand cmd = new SqlCommand("backup database DatabaseExample to disk = @x with format", con);
cmd.Parameters.AddWithValue("@x", @"C:\test.bak");
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}

hdv212
شنبه 23 شهریور 1387, 17:43 عصر
به منظور تسهیل در امر Backup و Restore کردن دیتابیس، من کلاسی رو در بخش نمونه برنامه ها گذاشتم که میتونید در اینجا (http://barnamenevis.org/forum/showpost.php?p=591783&postcount=125) اونو ببینید و امتحان کنید، البته برای SqlExpress تست نکردم، شما تست کنید و نتیجه رو همینجا بذارید.