PDA

View Full Version : پشتیبان گیری



teymoorei
جمعه 19 فروردین 1390, 12:29 عصر
سلام
خواهش می کنم کمک کنید .
من هر سوالی پرسیدم جواب داده نشد .
من می خوام توی برنامم یه یکاپ از Database بگیرم .
خیلی سادس اما می گه از database داره جای دیگه ای استفاده می شه درحالی که اینطوری نیست .
فقط یه کپی پیست سادس اما نمی شه .
خواهشا کمک کنید خیلی عجله دارم .

DoDoklak
شنبه 20 فروردین 1390, 17:28 عصر
از چه دیتابیسی استفاده میکنید؟

teymoorei
شنبه 20 فروردین 1390, 17:57 عصر
من از SQL استفاده کردم

mohsencom
شنبه 20 فروردین 1390, 18:29 عصر
با کامپوننت زیر ساده و راحت از دیتابیست بکاپ بگیر و یا بازیابیش کن

teymoorei
شنبه 20 فروردین 1390, 21:42 عصر
دوست عزیز می خوام باکد باشه که واسه استادم توضیح بدم .

bhasoft
شنبه 20 فروردین 1390, 23:00 عصر
با سلام.دوست عزيز خوبه به اين صفحه هم يه نگاهي بندازي.احتمالا بدردت بخوره...

كليك كن (http://barnamenevis.org/showthread.php?266538-نحوه-backup-گیری)

mohsen12345
شنبه 20 فروردین 1390, 23:24 عصر
سلام
خواهش می کنم کمک کنید .
من هر سوالی پرسیدم جواب داده نشد .
من می خوام توی برنامم یه یکاپ از Database بگیرم .
خیلی سادس اما می گه از database داره جای دیگه ای استفاده می شه درحالی که اینطوری نیست .
فقط یه کپی پیست سادس اما نمی شه .
خواهشا کمک کنید خیلی عجله دارم .

با سلام
شما چون از پایگاه داده SQL استفاده می کنی و اون موقع اجرا باید Attach باشه ، به همون دلیل به شما اجازه نسخه برداری ازش رو نمی ده
اگه از SQLEXPRES استفاده می کنید و از طریق ConnectionString پایگاه دادتون رو Attach می کنید ابتدا تمام Connection هاتون رو Clear کنید و سپس پشتیبان وگیرید و دوباره اونها رو ایجاد( new) کنید و برای بازگردانی پشتیبان هم همین عمل رو انجام بدید.
اگه از نسخه های دیگه SQL استفاده می کنید یا از طریق ConnectinString پایگاه دادتون رو Attach نمی کنید ، یا اصلا می خواهید یک روش خوب و عاقلانه واسه پشتیبان گیری استفاده کنید بهتون توصیه می کنم یه سری به بخش پایگه داده این فروم بزنید یا در google عبارت (نحوه پشتیبان گیری از SQL در vb.net) رو جستجو کنید
موفق باشید.

DoDoklak
یک شنبه 21 فروردین 1390, 08:58 صبح
ار دیتابیس بصورت Attach شده است از دستورات زیر استفاده کنید


پشتیبان گیری



Using CMD As New SqlCommand("BACKUP DATABASE [DatabaseName] TO DISK = N'D:\Account.BAK'", SqlCon)
CMD.CommandTimeout = 0
CMD.ExecuteNonQuery()
End Using


بازیابی



Using CMD As New SqlCommand("USE master RESTORE DATABASE [DataBaseName] FROM DISK = N'D:\Account.BAK' WITH REPLACE", SqlCon)
CMD.CommandTimeout = 0
CMD.ExecuteNonQuery()
End Using

teymoorei
یک شنبه 21 فروردین 1390, 13:01 عصر
سلام
بعد از راهنمایی های دوستان مشاهده تاپیک های مختلف یه کارایی کردم اما یه Error داره
اینم عکسش
درضمن کدی هم که استفاده کردم هم داخل تصویر هست
68536

teymoorei
یک شنبه 21 فروردین 1390, 13:33 عصر
اینم یه روش دیگس که بازم Error داره
68539
کمک کمک لطفا

DoDoklak
یک شنبه 21 فروردین 1390, 18:36 عصر
روش پشتیان گیری و بازیابی که من در پست 8 ارائه دادم مربوط به وقتیه که شما دیتابیس را Attach کرده باشید.ولی با توجه به کد شما مشخصه که شما از روش غیر attach استفاده میکنید و روش مربوطه برای شما کاربرد ندارد

شما میتونید از همون روش کپی کردن استفاده کنید. فقط قبل از کپی ابتدا تمام Connection هاتون رو Close کنید

در کانکشن هم به جای استفاده از |DataDirectory| از دستور Application.StartupPath استفاده کنید

teymoorei
یک شنبه 21 فروردین 1390, 22:01 عصر
من همه Connection ها رو هم بستم اما بازم مشکل داره میگه در حال استفادس
همچنین اگه میشه لطف کنید کانکشن استرینگ رو هم کامل بزارید .
خیلی عجله دارم .
ممنون

teymoorei
دوشنبه 22 فروردین 1390, 09:50 صبح
دوستان کمک کنید لطفا ...
کمممممممممممممممککککککککک ککککککککککککککککککک

teymoorei
دوشنبه 22 فروردین 1390, 19:15 عصر
دوستان کمک کنن لطفا شدید کارم لنگه

mohsencom
دوشنبه 22 فروردین 1390, 20:09 عصر
این تاپیک رو ببینید فکر کنم کمکتون کنه

http://barnamenevis.org/showthread.php?59638-atatch-%DB%8C%D8%A7-detatch-%DA%A9%D8%B1%D8%AF%D9%86-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D8%A7%D8%B2-sql-server-%D8%AF%D8%B1-%D9%85%D8%AD%DB%8C%D8%B7-%D9%88%DB%8C-%D8%A8%DB%8C-%D8%AF%D8%A7%D8%AA-%D9%86%D8%AA

alimanam
سه شنبه 23 فروردین 1390, 11:57 صبح
با سلام


دوستان کمک کنن لطفا شدید کارم لنگه
اولاً که در پست شماره 10 خودتون در کانکشن استرینگتون یه کاراکتر " | " رو جا انداختین تصحیح کنید .

با فرض بر اینکه :

Dim connection As new SqlConnection("Your ConnectionString")
دوماً برای قطع تمامی ازتباطات با پایگاه داده اتاچ شده باید کد زیر رو بنویسین :

connection.ClearAllPools()

موفق باشید ./

teymoorei
سه شنبه 23 فروردین 1390, 14:59 عصر
دوستان من گیج شدم هرکسی یه چیزی میگه خواهشا یکی پیداشه و یه کد خوب برام بزاره .
فکرنکنم واسه اساتید ایت سایت کار سختی باشه

teymoorei
چهارشنبه 24 فروردین 1390, 10:59 صبح
کمک کنییییییییییییییییییید درست نشد .

DoDoklak
چهارشنبه 24 فروردین 1390, 12:00 عصر
من قبلا برای نسخه express از کد زیر استفاده میکردم
ببین این کد کارتو حل میکنه



If File.Exists(System.Windows.Forms.Application.Start upPath + "\DB_BANK.mdf") And File.Exists(System.Windows.Forms.Application.Start upPath + "\DB_BANK_log.LDF") Then
If Directory.Exists("D:\BackUp\") Then
File.Copy(System.Windows.Forms.Application.Startup Path + "\DB_BANK.mdf", path + CreatePath(path) + "D:\BackUp\DATA.BAK", True)
File.Copy(System.Windows.Forms.Application.Startup Path + "\DB_BANK_log.LDF", path + CreatePath(path) + "D:\BackUp\LOG.BNK", True)
MessageBox.Show("عمليات پشتيبان گيري با موفقيت انجام شد", "پیغام", MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
MessageBox.Show("فايل برنامه موجود نمي باشد لطفا از نسخه پشتيبان قبلي استفاده كنيد در صورت نبود برنامه را دوباره نصب كنيد", "دفترچه تلفن", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
End If


مسیر D:\BackUp\ میتونید به صورت داینامیک از کاربر بگیرید

teymoorei
چهارشنبه 24 فروردین 1390, 13:22 عصر
دوست گلم این مال vb.net نیست من با vb.net کارمی کنم

teymoorei
چهارشنبه 24 فروردین 1390, 17:50 عصر
کمممممممممممممممممممک

teymoorei
چهارشنبه 24 فروردین 1390, 21:24 عصر
کمک کنید لطفا .

alimanam
چهارشنبه 24 فروردین 1390, 21:54 عصر
با سلام

شما که هنوز مشکلت حل نشده !!!!!!!!! دوست عزیز این سوال رو تا حالا خیلی ها پرسیدن و جواب گرفتن شما واسه اینکه مشکلت حل بشه یه پروژه نمونه بزار که دقیقا مشخص بشه چکار کردی تا دوستان بهتر بتونین راهنمای کنن شما هر روز میای یه کد میزاری که آقا این مشکل داره اون نداره اما یه جای دیگه مشکل دار شد .......

موفق باشید ./

teymoorei
پنج شنبه 25 فروردین 1390, 13:37 عصر
دوستان من باید پروژه رو شنبه تحویل بدم خواهشا کمک کنید .دیگه فرصتی ندارم .

teymoorei
پنج شنبه 25 فروردین 1390, 18:11 عصر
کمممممممممممممممممممممممم ممک

mohsencom
پنج شنبه 25 فروردین 1390, 18:43 عصر
تو هنوز مشکلت حل نشده؟؟؟
ورژن sql ت چنده؟؟؟ 2000 یا 2005 یا 2008

یکم جستجو کن دیگه عزیز

teymoorei
پنج شنبه 25 فروردین 1390, 19:09 عصر
من از SQLEXPRESS خود Visual Studio استفاده می کنم 2008
پدرم در اومد بس که جست و جو کردم:چشمک:

mohsencom
پنج شنبه 25 فروردین 1390, 19:27 عصر
بفرما اینم بکاپ که آمادش کردم...هم تو 2000 sql جواب میده هم تو 2005 sql که EXPRESS هست

رو VS 2008 هم جواب میده و من کاملا تست کردم...هیچ گونه مشکلی نداره

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

ایشالا که دیگه جواب گرفته باشی :چشمک:

teymoorei
پنج شنبه 25 فروردین 1390, 19:37 عصر
ممنون دوست گلم ولی این که پر از ایراده
اینم عکسش :
68746

teymoorei
پنج شنبه 25 فروردین 1390, 19:50 عصر
واییییییییی خدای من یعنی یکی پیدا نمیشه بتونه این مشکل رو برای همیشه ریشه کن کنه ؟
توی هر تاپیکی که رفتم نیمه کار ولش کرده بوده .

mohsencom
پنج شنبه 25 فروردین 1390, 19:51 عصر
شما اصلا sql رو سیستمت نصبه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
برو sql 2005 رو بخر رو سیستمت نصب کن

teymoorei
پنج شنبه 25 فروردین 1390, 19:58 عصر
دوست عزیز من همون طور که قبلا هم گفتم Visula Studio 2010 دارم با SQLEXPRESS 2008
دیگه دارم دیوونه می شم .

mohsencom
پنج شنبه 25 فروردین 1390, 20:09 عصر
دوست عزیز اون SQLEXPRESS رو بنداز دوووووووووووووووووووررررر ررررررررررررررررررررررررر ررر

برو sql بخر رو سیستمت نصب کن....خودتو راحت کنننننننننننننننننننننننن نننننننننننننننننن

teymoorei
پنج شنبه 25 فروردین 1390, 20:11 عصر
من SQL 2008 هم دارم اما نصب نکردم
من فقط می خوام از داخل برنامم به کپی از DataBase بگیرم و یه جای دیگه کپی کنم همین

teymoorei
پنج شنبه 25 فروردین 1390, 20:21 عصر
راستی اگه یه وقت کسی خواست یه کار خیر بکنه و کمک کنه اینم کانکش استرینگش
Dim Connection As New SqlConnection("Data Source=.\;AttachDbFilename=|DataDirectory|\Databas e.mdf;Integrated Security=True;Connect Timeout=30")

mohsencom
پنج شنبه 25 فروردین 1390, 20:23 عصر
نمیدونم رو sql 2008 جواب بده یا نه...امتحان نکردم...ولی رو 2005 و 2000 امتحان کردم جواب داد

teymoorei
پنج شنبه 25 فروردین 1390, 20:28 عصر
چیکار کنم حالا؟

teymoorei
پنج شنبه 25 فروردین 1390, 21:12 عصر
آیییییییییییییییییییییییی یکیییییییی به دادم برسه

teymoorei
پنج شنبه 25 فروردین 1390, 22:46 عصر
دارم نا امید می شم
کمک کنید دیگه

teymoorei
جمعه 26 فروردین 1390, 01:50 صبح
حوراااااااااااا بلاخره ساعت 2.15 شب جواب گرفتم فقط مونده بازگردانیش اگه می تونید کمک کنید تا این ماجرا ختم به خیر شه .
اینم کدش :
Dim cnn As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\DataBase.MDF;Integrated Security=True;Connect Timeout=30;User Instance=True")
Dim cmd As New SqlCommand
cnn.Open()
Dim query As String = "BACKUP DATABASE [" + Application.StartupPath + "\DataBase.MDF] TO DISK = N'D:\\backup.BAK'"
cmd.CommandText = query
cmd.Connection = cnn
cmd.ExecuteNonQuery()
cnn.Close()

teymoorei
جمعه 26 فروردین 1390, 02:24 صبح
و سپس در ساعت 2.49 بازیابی رو هم پیدا کردم اما به Error داره اگه می تونید این رو حل کنید .
اینم کدش :
Dim cnn As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\DataBase.MDF;Integrated Security=True;Connect Timeout=30;User Instance=True")
Dim cmd As New SqlCommand
cnn.Open()
Dim query As String = "RESTORE DATABASE [DataBase] FROM DISK = N'D:\\backup.BAK' WITH FILE = 1, MOVE N'Database_log' TO N'D:\\backup.BAK', MOVE N'Database_log' TO N'F:\Database_log.ldf', KEEP_REPLICATION, NOUNLOAD, REPLACE, STATS = 10"
cmd.CommandText = query
cmd.Connection = cnn
cmd.ExecuteNonQuery()
cnn.Close()

teymoorei
جمعه 26 فروردین 1390, 02:48 صبح
اینم Error اش :
68761

teymoorei
جمعه 26 فروردین 1390, 12:58 عصر
کسی نیست تو این سایت جواب مارو بده ، واقعا انقدر سخته ؟

alimanam
جمعه 26 فروردین 1390, 13:20 عصر
با سلام

سخت نیست شما باید همون اول کدت رو میزاشتی تا بهتر دوستان کمکت میکردن چون 1000 روش برای بکاپ و ریستور کردن دیتابیس وجود داره کاربرای سایت باید حدس میزدن شما از چه روشی دارین استفاده میکنین ؟!!!!!!!!!!!!!!!!!!!

شما کدی که برای ریستور کردن پایگاه داده استفاده کردی رو به این صورت تغییر بده مشکلت حل میشه :

Try
Dim cnn As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\DataBase.MDF;Integrated Security=True;Connect Timeout=30;User Instance=True")
Dim cmd As New SqlCommand("RESTORE DATABASE [DataBase] FROM DISK = 'D:\backup.BAK' WITH REPLACE", cnn)
cnn.Open()
cmd.ExecuteNonQuery()
cnn.Close()
MsgBox("Done !", MsgBoxStyle.Information)
Catch ex As Exception
MsgBox(Err.Description, MsgBoxStyle.Exclamation)
End Try

موفق باشید ./

teymoorei
جمعه 26 فروردین 1390, 13:46 عصر
ممنون عزیزم اما همون طور که نوشتم من شب گذشته یاعت 2.49 دقیقه اینارو پیدا کردم .
و اما در مورد کد شما Error زیر رو میده مبگه نمی تونه دوباره نویسی کنه .
یک نکته دیگه این که می خوام خود کار بر مسیر ذخیره سازی رو بده .
68771

alimanam
جمعه 26 فروردین 1390, 17:23 عصر
با سلام

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

http://up.iranblog.com/images/vuu7iawowlcou99m88qm.gif

موفق باشید ./

alimanam
جمعه 26 فروردین 1390, 17:46 عصر
اوکی خوشحالم که مشکلت حل شد :چشمک:

موفق باشید ./

teymoorei
جمعه 26 فروردین 1390, 18:52 عصر
باز این Error رو میده
68778

alimanam
جمعه 26 فروردین 1390, 19:08 عصر
توی رویداد لود فرم و همینطور در رویداد بازیابی دیتابیس کد زیر رو بنویس : در ضمن ببین فایل اجرایی تو پروسس در حال اجرا نباشه

DetachDB("Database")

mohsencom
جمعه 26 فروردین 1390, 19:09 عصر
باز این Error رو میده
68778
احتمالا فایل exe سورس در حال اجراست و نبستیش و شما داری یه بار دیگه فایلو اجرا میکنی....task manager رو باز کن و فایل exe مربوط به سورس رو End Task کن..بعد دوباره فایل رو اجرا کن

alimanam
جمعه 26 فروردین 1390, 19:12 عصر
احتمالا فایل exe سورس در حال اجراست و نبستیش و شما داری یه بار دیگه فایلو اجرا میکنی....task manager رو باز کن و فایل exe مربوط به سورس رو End Task کن..بعد دوباره فایل رو اجرا کن

روی سیستم شما که مشکلی نداشت درسته ؟

mohsencom
جمعه 26 فروردین 1390, 19:18 عصر
روی سیستم شما که مشکلی نداشت درسته ؟
راستش فایل پسورد داره داداش...ولی من با این اروری که ایشون گفته آشنام
ممنون میشم پسورد رو بگی تا امتحانش کنم

alimanam
جمعه 26 فروردین 1390, 19:21 عصر
راستش فایل پسورد داره داداش...ولی من با این اروری که ایشون گفته آشنام
ممنون میشم پسورد رو بگی تا امتحانش کنم

ربطی به ارور نداره عزیز شما برنامه Exe که درپست شماره 46 هست رو امتحان کن ببین مشکل داره یا نه

mohsencom
جمعه 26 فروردین 1390, 19:53 عصر
ربطی به ارور نداره عزیز شما برنامه Exe که درپست شماره 46 هست رو امتحان کن ببین مشکل داره یا نه

نه من منظورم این بود که این اروری که واسه دوستمون رخ داده رو میشناسم و قبلا باهاش برخورد کردم واسه همین اون راهنمایی رو بهش کردم

آره داداش...کار میکنه.....کارت درسته...پسورد رو هم نگفتی :بامزه:

teymoorei
جمعه 26 فروردین 1390, 23:08 عصر
دوستان کارم راه افتاد و باید دعا به جون alimanam (http://barnamenevis.org/member.php?43498-alimanam)