PDA

View Full Version : خطا درهنگام پشتیبان گیری از دیتابیس



m-alizadeh
یک شنبه 06 اردیبهشت 1388, 07:22 صبح
با سلام و خسته نباشید به دوستان
من وقتی از کد زیر جهت پشتیبان گیری استفاده می کنم با خطا مواجهه میشم:







private void Backup(string strFileName)
{
try
{

this.Cursor = Cursors.WaitCursor;

objsqlcommand = new SqlCommand("BACKUP DATABASE mydb TO DISK = N'" + strFileName + "'" + " WITH NOFORMAT, NOINIT, NAME = N'mydb-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10",objConnection);



if (objConnection.State != ConnectionState.Open)
objConnection.Open();
int Successbackup = objsqlcommand.ExecuteNonQuery();
if (Successbackup != 0)
{
this.Cursor = Cursors.Default;
MessageBox.Show(" تهيه نسخه پشتيبان از اطلاعات با موفقيت انجام شد");
}

objConnection.Close();

}
catch (Exception ex)
{
MessageBox.Show("Error Occurd :" + ex.Message);
}
}




متن خطا:

Could not locate entry in sysdatabases for database 'mydb '. No entry found with that name. Make sure that the name is entered correctly.
BACKUP DATABASE is terminating abnormally.



رشته اتصال به بانک هم درسته و باهاش براحتی وصل میشم و insert و delete و select میکنم.


ممنون میشم کمکم کنید.

mohsen_csharp
یک شنبه 06 اردیبهشت 1388, 09:51 صبح
با سلام
ببین این برنامه به دردت می خوره
http://barnamenevis.org/forum/showthread.php?t=153480

سجادحیدری
یک شنبه 06 اردیبهشت 1388, 22:08 عصر
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Security.Cryptography;

namespace project
{
publicpartialclass basicform : Form
{

public basicform()
{
InitializeComponent();
}

string filename;
privatevoid BACKUP_LinkClicked_1(object sender, LinkLabelLinkClickedEventArgs e)
{
this.saveFileDialog1.ShowDialog();
if ((this.saveFileDialog1.FileName != ""))
{
filename = saveFileDialog1.FileName.ToString();
try
{
SqlConnection objcon = new SqlConnection();
objcon.ConnectionString = "Data Source=.;Initial Catalog=dabirkhaneh;Integrated Security=True";
SqlCommand objcom = new SqlCommand();
objcom.Connection = objcon;
string t = @"BACKUP DATABASE [dabirkhaneh]TO DISK=N'" + filename + "' WITH NOFORMAT,NOINIT,NAME=N'mydb-full Database Backup',SKIP,NOREWIND,NOUNLOAD,STATS=10;";
objcom.CommandText = t;
objcon.Open();
objcom.ExecuteNonQuery();
objcon.Close();
MessageBox.Show("پشتیبان گیری با موفقیت انجام شد");
}
catch
{
MessageBox.Show("پشتیبان گیری با موفقیت انجام نشد");
}
}
}
//**************************
//**************************
privatevoid RESTORE_LinkClicked_1(object sender, LinkLabelLinkClickedEventArgs e)
{
this.openFileDialog1.ShowDialog();
if ((this.openFileDialog1.FileName != "") && (this.openFileDialog1.FileName!="openFileDialog1"))
{
try
{
filename = openFileDialog1.FileName;
SqlConnection SqlCon = new SqlConnection();
SqlCon.ConnectionString = "Data Source=.;Initial Catalog=dabirkhaneh;Integrated Security=True";
SqlCommand SqlCom = new SqlCommand();
SqlCom.Connection = SqlCon;
SqlCon.Open();
SqlCom.CommandText ="ALTER DATABASE dabirkhaneh SET SINGLE_USER WITH ROLLBACK IMMEDIATE" +" USE master; RESTORE DATABASE dabirkhaneh FROM DISK =N'"+filename+"'";
SqlCom.Connection = SqlCon;
SqlCom.ExecuteNonQuery();
SqlCon.Close();
// *******************//
SqlCon.Open();
SqlCom.CommandText ="ALTER DATABASE dabirkhaneh SET MULTI_USER ";
SqlCom.Connection = SqlCon;
SqlCom.ExecuteNonQuery();
SqlCon.Close();
MessageBox.Show("بازیابی با موفقیت انجام شد");
}
catch
{
MessageBox.Show("بازیابی با موفقیت انجام نشد");
}
}
}



}
}

m-alizadeh
سه شنبه 08 اردیبهشت 1388, 07:50 صبح
با سلام
آقا مشکل ما هنوز پابرجاست این تکه کدی رو هم که دوستمون گذاشته امتحان کردم ولی فرقی نکرد باز همون پیغام خطا رو میده ، اصلا کسی می تونه بگه این پیغام خطا چیه؟ و چی میگه؟
رشته ی اتصالی که با اون به بانک وصل میشم رو هم گذاشتم ، البته اینو بگه من با این رشته اتصال براحتی از بانک insert,delete,update,select می کنم.

private const string _ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirecto ry|\\mydb.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";

با تشکر

Developer Programmer
سه شنبه 08 اردیبهشت 1388, 16:43 عصر
مطمئنی اسم دیتابیس رو درست وارد کردی؟
به نظرم،ابتدا متن رو در Query Analyzer تایپ کن اگه درست بود، بهتره Stored Procedure بنویسی و اجازه بدی، Backup رو اون واست انجام بده و در نهایت مقدار برگردونه.

m-alizadeh
چهارشنبه 09 اردیبهشت 1388, 08:10 صبح
سلام

این کار رو هم در خودsqlexpress انجام دادم و متن رو اونجا تست کردم ولی باز همین پیغام رو داد


آخه مشکل چیه؟ کسی راه دیگه ایی به ذهنش نمیرسه؟

Asad.Safari
چهارشنبه 09 اردیبهشت 1388, 08:35 صبح
objConnection رو به دیتابیس Master متصل کن , ببین چی میشه ؟

Asad.Safari
چهارشنبه 09 اردیبهشت 1388, 09:17 صبح
با استفاده از دو تا دستور زیر چک کن , ببین اسم دیتابیست در لیست وجود داره ؟


sp_helpdb




select * from sysdatabases


با استفاده از دستور زیر چک کن ببین فایل data ات واقعا وجود دارد یا نه ؟


select filename from sysdatabases WHERE name ='MyDB'


اگر مراحل بالا همشون ok بود , دیتابیست رو یه بار Deattach کن و دوباره attach بکن.

موفق باشید

m-alizadeh
دوشنبه 14 اردیبهشت 1388, 07:44 صبح
با تشکر از دوستان و آقای افشین
من دستور بک آپ رو توی query analyzer نوشتم و این بار آدرس کامل رو تایپ کردم یعنی

ادمه مسیر تا رسیدن به پوشه پروژه\c:\document and setting
و جواب هم داد حالا من که نمی تونم این مسیر رو توی کد پروژه اضافه کنم چون پروژه و بانک های اطلاعاتی من باید توی هر سیستمی و هر مسیری اجرا بشه ، می خواستم بدونم چطور باید این کار رو توی پروژه در دستور backup انجام بدم؟


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

hojjat_gh
دوشنبه 14 اردیبهشت 1388, 10:57 صبح
نام بانکت رو عوض کن ببین فرقی میکنه

m-alizadeh
سه شنبه 15 اردیبهشت 1388, 09:18 صبح
ممنون آقا حجت ولی اگه کمی به نوشته های من دقت کنید متوجه میشید که من گفتم:
بادادن آدرس کامل مسیر دیتابیس در کوئری آنالیزر به جواب میرسم و نیازی به تغییر نام دیتابیس نیست
و حالا مشکل من اینه که چطور این آدرس رو توی کدهام در پروژه اضافه کنم آخه این پروژه باید در هر سیتمی و هر مسیری اجرا بشه و نباید یک مسیر خاص رو براش نوشت.!


ممنون میشم اگه کسی بتونه کمکی کنه.