# پایگاه‌های داده > SQL Server > مدیریت دیتابیس (Database Administration) > Backup & Restore >  مشکل در گرفتن back up

## mehrab1387

*مشکل در گرفتن back up* 

من از اس کیو ال خود ویژوال استودیو استفاده میکنم و وقتی که میخواهم از پایگاه داده پشتیبان بگیرم با خطای زیر مواجه میشوم.DataBase does not exist. make sure that the name is entered correctly. back up DataBase is terminating abnormallyدر صورتی که هم پایگاه داده موجود است و هم نام آن درست وارد شده است.البته من قبلا که از management sql server express edition استفاده میکردم راحت پشتیبان میگرفت.
لطفا راهنمایی کنید

----------


## Ishtar_4552

سلام 
من هم دقیقا چنین مشکلی دارم از sql express خود ویژوال استودیو 2010 استفاده کردم، با اینکه کدهای نوشته شده درست است.. ولی با چنین خطایی مواجه می شوم..
ضمن اینکه می خواهم موقع ساخت ستاپ و نصب برنامه در سیستم دیگر برنامه ام جواب بدهد..

کد استفاده شده:
'backup database db to disk='e:\backup\b.bak

----------


## aminaltavista

> سلام 
> من هم دقیقا چنین مشکلی دارم از sql express خود ویژوال استودیو 2010 استفاده کردم، با اینکه کدهای نوشته شده درست است.. ولی با چنین خطایی مواجه می شوم..
> ضمن اینکه می خواهم موقع ساخت ستاپ و نصب برنامه در سیستم دیگر برنامه ام جواب بدهد..



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

موفق باشی

----------


## Ishtar_4552

متشکرم از توجه شما.. :-)
ولی من مشکلی در چگونگی ثبت اطلاعات و .. ندارم ، برنامه ام هم یک نرم افزار حسابداری کوچک ثبت آمار هستش که کاملا درست کار می کند ، فقط موقع بک آپ گیری با این مشکل مواجه می شوم .. آموزش هایی که گفتید فکر نمی کنم کمکی به حل مشکل من بکنه..

----------


## barnamenevisforme

سلام
این یه نمونه کد در vb.net
 Private Sub تهیهنسخهپشتیبانToolStripMenuItem_Cl  ick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles تهیهنسخهپشتیبانToolStripMenuItem.Cl  ick
        Me.SaveFileDialog1.FileName = get_date_of_edit()
        Dim reslt As DialogResult = Me.SaveFileDialog1.ShowDialog()
        If reslt = Windows.Forms.DialogResult.OK Then
            Dim file_name As String = Me.SaveFileDialog1.FileName
            Dim mybackupcmd As String = "BACKUP DATABASE db TO DISK='" + file_name + "'"
        
            Dim myConnectionString As String
            myConnectionString = My.Settings.db.ToString
            Dim myConnection As New System.Data.SqlClient.SqlConnection(myConnectionSt  ring)
            Dim mycommand As New System.Data.SqlClient.SqlCommand(mybackupcmd, myConnection)
            Try
                myConnection.Open()
                mycommand.ExecuteNonQuery()
                myConnection.Close()
                MsgBox("تهیه نسخه پشتیبان با موفقیت انجام شد", MsgBoxStyle.Information, "عملیات موفق")

            Catch ex As Exception
                MsgBox("تهیه نسخه پشتیبان با موفقیت انجام نشد", MsgBoxStyle.Critical, "عملیات نا موفق")

            End Try
        End If
    End Sub
دقت کنید،اگر نام پایگاه داده شما دارای فاصله باشد،در sql server با _ جایگزین میشود ولی موقع تهیه backup با خطا مواجه میشید.
اگر اینطوره حتما نام پایگاه داده رو تصحیح کنید.

----------


## Ishtar_4552

مشکل از نحوه کد نویسی نیست ،کدهای من کاملا درسته، من در خود sql server 2008 می تونم بک آپ بگیرم ، ولی الان مشکل من با sql express هست ؛من از چند دیتابیس دیگر که در خود sql express ایجاد کردم سعی کردم بک آپ بگیرم دقیقا همین مشکل را داشتند و با این خطا مواجه می شدم با اطلاعات کمی که دارم فکر می کنم که sql sexpress  نمی تونه دیتابیس رو بشناسه و احتمالا اتچ نشده ،دلیلش رو نمی دونم، ، از اونجایی که من می خوام روی سیستم دیگر sql express مربوط به خود ویژوال استودیو را نصب کنم ، می خواهم که از این طریق بک آپ بگیرم..

من ابتدا دیتابیسم را از طریق این کدهای اسکیو ال اتچ می کنم :
USE master;
EXEC sp_attach_single_file_db @dbname = 'NBDB', 
    @physname = N'Address';

بعد از اینکه دیتابیس با موفقیت اضافه شد.. می تونم درج و حذف و نمایش اطلاعات  جدول هام رو به درستی انجام بدم..
ولی موقع پشتیبان گیری با خطای زیر مواجه می شم:

DataBase does not exist. make sure that the name is entered
 correctly. back up DataBase is terminating abnormally

پروسیجری  که استفاده کردم هم این هست:

ALTER PROCEDURE CreateBackup
@backupPath nvarchar(150),
@db nvarchar(150)
AS
BACKUP DATABASE @db TO DISK=@backupPath WITH FORMAT,INIT, SKIP, STATS = 10
    RETURN

مثال: 
NBDB=@db
e:\b.bak=@backupPath

خود پروسیجر را هم به تنهایی اجرا می کنم با پارامترهایی که دستی می دهم با ز هم با همین خطا مواجه می شم.

----------


## meisam12

سلام
من به این فروم http://www.dotnetobject.com/Thread-D...ing-sql-serverسری زدم. و دقیقاً همین مشکلات شما را داشتند و در نتیجه پس از بحث طولانی به این نتیجه رسیدند که اون مسیری که داده بودند(طبق پست دوم e:\backup یعنی پوشه backup )پ  Read only  بود.

----------


## Ishtar_4552

هر مسیر دیگری را هم که می دم همین مشکل رو داره..

----------


## meisam12

سورس کدتان را بذارید تا ببینم.



> هر مسیر دیگری را هم که می دم همین مشکل رو داره..

----------


## baktash.n81@gmail.com

سلام 
به آدرسی که فایل MDF وجود داره برید و ببینید که فایل در اون آدرس وجود داره یا خیر ... 
این روش رو هم امتحان کنید ...



BACKUP DATABASE [D:\testing.mdf] TO disk = 'C:\PathToBackup\BackupFileName.bak'

----------


## baktash.n81@gmail.com

ابن لینک هم ممکنه کمک کنه ....

----------


## Ishtar_4552

سلام 
من یک نمونه سورس شبیه به برنامه ای که نوشتم اینجا گذاشتم..
یا اینکه نمی تونستم دیتا بیس رو اتچ کنم و یک بار دیگر هم که تست کردم دیتابیس اتچ شد ولی اطلاعاتی به من نشان نداد..
موقع اتچ کردن با این پیغام مواجه می شم..
untitled.GIF

نمونه سورس رو هم قرار دادم..
WindowsFormsApplication1.rar

----------


## meisam12

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

 SqlConnection con =new SqlConnection( Properties.Settings.Default.NBConnection);
            con.Open();
            SqlCommand cmd = new SqlCommand(@"backup database Test1 to disk ='d:\StockDBBackUp1.bak' with init,stats=10",con);
            cmd.ExecuteNonQuery();

----------


## m0hammad_01

> مشکل از نحوه کد نویسی نیست ،کدهای من کاملا درسته، من در خود sql server 2008 می تونم بک آپ بگیرم ، ولی الان مشکل من با sql express هست ؛من از چند دیتابیس دیگر که در خود sql express ایجاد کردم سعی کردم بک آپ بگیرم دقیقا همین مشکل را داشتند و با این خطا مواجه می شدم با اطلاعات کمی که دارم فکر می کنم که sql sexpress  نمی تونه دیتابیس رو بشناسه و احتمالا اتچ نشده ،دلیلش رو نمی دونم، ، از اونجایی که من می خوام روی سیستم دیگر sql express مربوط به خود ویژوال استودیو را نصب کنم ، می خواهم که از این طریق بک آپ بگیرم..
> 
> من ابتدا دیتابیسم را از طریق این کدهای اسکیو ال اتچ می کنم :
> USE master;
> EXEC sp_attach_single_file_db @dbname = 'NBDB', 
>     @physname = N'Address';
> 
> بعد از اینکه دیتابیس با موفقیت اضافه شد.. می تونم درج و حذف و نمایش اطلاعات  جدول هام رو به درستی انجام بدم..
> ولی موقع پشتیبان گیری با خطای زیر مواجه می شم:
> ...


شما حتما اول از طریق SQL SERVER Managment Studio Express Edition مطمئن شوید که دیتابیستون Attach شده است.
اگر دیتابیستون Attach شده بود، دستور پشتیبان گیریتون زیر رو تو محیط Query Editor خود SQL SERVER Managment Studio Express Edition بنویسید و اجرا کنید.
اگه با موفقیت کارهای بالا انجام شد، میریم سراغ احتمال های دیگه!
BACKUP DATABASE [MyDatabase] TO disk = 'D:\BackupFileName.bak'

----------

