-
حل مشکل پشتیبان گیری و بازیابی برای همیشه
با سلام ، ابتدا باید عرض کنم که این تاپیک بعد از جستجوی کامل سایت ایجاد شده
من در برنامه ام می خواهم بدون اینکه تنظیماتی روی Sql 2000 انجام شود از بانکم پشتیبان گیری کنم.
راههای زیادی در سایت پیشنهاد شده که عملی ترین آنها نیاز به این داره که یک نفر کاربلد و آشنا به sql تنظیماتی را در آن ایجاد کند .تازه اگر قرار است برنامه از طریق install و بدون دسترسی به entrprice Maneger انجام شود نمی دانم چه طوری عملی است.
به هر حال من این نوع پشتیبان گیری را در برنامه حسابداری هلو دیدم که شامل امکانات زیر است :
1- وقتی دکمه پشتیبان گیری زده میشه از کاربر سوال می کنه کجا ذخیره کنم و کاربر با مشخص کردن جا شروع به پشتیبان گیری می شود.
2- این فایلها به صورت زیپ یا کددار هستند.
3- موقع بازگرداندن هم با انتخاب همان فایل کا تمام میشود.
---------------------------------------------------
برنامه من در VS2005 و بانکم با sql2000 است.
امیدوارم در پایان این بحث کلمه حل شده را مقابل تاپیک ببینیم.
-
سلام دوست عزیز
برای پشتیبان گیری می تونی یه پروسیجر بنویسی و مسیر رو بهش پاس بدی و از کامپوننت ها هم برای فشرده سازی استفاده کنی و..
اما برای بازیابی اطلاعات میتونی فایل پشتیبان را از حالت زیب خارج کنی(با همان کامپوننتی که استفاده کردی) و بعد مسیر فایل رو به یه پروسیجر دیگه که برای بازیابی هست بفرستی
اما مشکلبیشتر زمانی هست که می خوای بازیابی کنی و بهت پیغام می ده که یک کاربر داره از بانک استفاده می کنه و.. که اونم باید use master رو اول sp بنویسی و بعد همه کاربرای بانکی رو که می خوای برگردانی رو از بین ببری و بعد پشتیبان بگیری که من موقع بازیابی کمی مشکل دارم (همین بانک داره استفاده می شه و..)
برای دیدن پروسیجر ها هم کلمه backup رو در قسمت sql همین سایت جستجو کن
موفق باشی
-
ابتدا از توجه شما متشکرم
اما:
من در بخش sql کدی که بشود از داخل vs2005 برای پشتیبان گیری استفاده کرد و بدون نیاز به دستکاری در sql باشد پیدا نکردم.
اگر ممکن است بیشتر توضیح بدید
-
سلام دوست عزیز کارهایی که بهشون اشاره کردی (برنامه حسابداری هلو) کد نویسی بسیار ساده ای داره . در واقع یکی از ویژگیهای جدید .Net این اجازه رو به برنامه نویس میده که بدون استفاده از توابع Sql و تنها با اضافه کردن چند رفرنس و اجرای فانکشهای از پیش تعریف شده اونها ، اعمال مورد نظر رو انجام بده .
مراحل انجام کار رو برات توضیح میدم .
ابتدا رفرنس های زیر رو به برنامتون اضافه کنید :
Microsoft.SqlServer.Smo
Microsoft.SqlServer.ConnectionInfo
بعد nameSpace های زیر رو به صورت زیر به کلاستون Import کنید :
Imports System.Data.SqlClient
Imports Microsoft.SqlServer.Management.Smo
Imports Microsoft.SqlServer.Management.Common
کد زیر رو برای گرفتن پشتیبان از دیتابیس استفاده کنید.
Public Shared Sub BackupDatabase(ByVal ConnectionStr As String, ByVal DevicePath As String)
Dim DataName As String="DataBaseName.bak"
Using cnn As New SqlConnection(ConnectionStr)
cnn.Open()
Dim Srvcon As New ServerConnection(cnn)
Dim Srv As New Server(Srvcon)
' Create backup device item for the backup
Dim bdi As New BackupDeviceItem(DevicePath & DataName, DeviceType.File)
' Create the backup informaton
Dim Backup As New Backup
Backup.Devices.Add(bdi)
With Backup
'Type Of Backup
.Action = BackupActionType.Database
.BackupSetDescription = "Backup DataBase"
.BackupSetName = "DB"
.Database = cnn.Database.ToString()
.LogTruncation = BackupTruncateLogType.Truncate
'Backup.ExpirationDate = New DateTime(2007, 5, 1)
' Run the backup
.SqlBackup(Srv)
End With
End Using
End Sub
پارامترهای این رویه شامل کانکشن استرینگ که رشته مربوط به اتصال به دیتابیس رو مشخص میکنه و Device Path که مسیر ذخیره بانک اطلاعاتی رو مشخص میکنه هست . شما میتونید با استفاده از یک SaveFileDialog این مسیر رو از کاربر دریافت کنید .
متغییر DataName نام فایل پشتیبان رو مشخص میکنه که پسوند اون bak است.
تا اینجا مربوط به پشتیبان گیری بود. برای انجام عمل restore از رویه زیر استفاده کنید.:
Public Shared Sub RestoreBackup(ByVal ConnectionStr As String, ByVal DevicePath As String)
Using cnn As New SqlConnection(ConnectionStr)
cnn.Open()
Dim DBName As String = cnn.Database
cnn.ChangeDatabase("master")
Dim Srvcon As New ServerConnection(cnn)
Dim Srv As New Server(Srvcon)
' Create backup device item for the backup
Dim bdi As New BackupDeviceItem(DevicePath, DeviceType.File)
' Create the restore object
Dim Restore As New Restore()
'cnn.Close()
With Restore
.Devices.Add(bdi)
.NoRecovery = False
.ReplaceDatabase = True
.Database = DataBaseName.bak
' Restore the database
Srv.KillAllProcesses(DBName) 'Important Code For Remove All Processes
.SqlRestore(Srv)
End With
End Using
End Sub
پارامترها مانند قبلند با این تفاوت که Device Path در اینجا شامل مسیر ونام بانک اطلاعاتی است که میتوان با استفاده از OpenFileDialog آن را از کاربر دریافت نمود . متد ChangeDatabase نیز باعث میشه مشکلی که جناب rezaei manesh بهش اشاره کردن پیش نیاد . برای اطمینان بیشتر متد KillAllProcesses رو هم استفاده کنید .
لازم به ذکر است که این روش رو خودم بارها پیاده سازی کردم وکاملا هم جواب داده . اگه جایی مشکل پیدا کردی مطرح کن .
-
سلام جناب sub zero
دست تان درد نکنه من از این روش استفاده نمی کردم من از پروسیجر هایی که تو دات نت می سازم استفاده می کنم و.. اما روش شما رو هم دست می کنم فکر کنم بهتر و کم دردسر تر باشه
حالا اگه می شه راهنمایی کنید که اگه بخوایم این پشتیبان گیری رو از سمت کلاینت انجام بدیم
چه مواردی رو باید رعایت کنیم
1.دادن مسیر شبکه ای
2. دادن سطوح دسترسی مورد نیاز
3.و...
-
نقل قول:
اگه بخوایم این پشتیبان گیری رو از سمت کلاینت انجام بدیم
چه مواردی رو باید رعایت کنیم
تنها چیز عجیبی که در این مورد باهاش مواجه شدم این بود که اگر مسیر ماشین پشتیبان گیری (BackupDeviceItem) یه کم طولانی میشد پیغام Failed Backup یا Failed Restore میداد . البته این مشکل فقط در کامپیوتر شرکت که به شبکه وصل بود پیش می یومد . توی کامپیوتر خونه همچین مشکلی نبود . شما هم تست کنید و نتیجه رو به من اطلاع بدید .
-
می خواهم قبل ار هر چیز از sub zero عزیز تشکر کنم ، کد شما بسیار کارآمد و زیبا بود.
اما حیفم می آید حالا که بحث به این خوبی پیش رفته این رو نپرسم.
به نظر شما بهترین روش zip کردن یا کد دار کردن فایل Backup در vs20005 چیه؟
البته من شنیده ام که vb.net یه ابزار برای این کار داره که فقط هم با خود این ابزار فایل از حالت فشرده در می اید، که البته این خود یک مزیت هم است.
-
نقل قول:
نوشته شده توسط
mohammad-gh
می خواهم قبل ار هر چیز از sub zero عزیز تشکر کنم ، کد شما بسیار کارآمد و زیبا بود.
اما حیفم می آید حالا که بحث به این خوبی پیش رفته این رو نپرسم.
به نظر شما بهترین روش zip کردن یا کد دار کردن فایل Backup در vs20005 چیه؟
البته من شنیده ام که vb.net یه ابزار برای این کار داره که فقط هم با خود این ابزار فایل از حالت فشرده در می اید، که البته این خود یک مزیت هم است.
کلاس های موجود در این فضا به شما کمک خواهند کرد،فایل ها فشرده شده ، این کلاس ها از استاندارهای تعریف شده در RFC 1951 http://www.faqs.org/rfcs/rfc1951.html
استفاده می کنند و تقریبا نرم افزارهای فشرده سازی با این فایلها کار می کنند ادامه توضیحات MSDN
The System.IO.Compression namespace contains classes that provide basic compression and decompression services for streams.
Classes
Class Description
DeflateStream Provides methods and properties for compressing and decompressing streams using the Deflate algorithm.
GZipStream Provides methods and properties used to compress and decompress streams.
Enumerations
Enumeration Description
CompressionMode Specifies whether to compress or decompress the underlying stream.
-
نقل قول:
به نظر شما بهترین روش zip کردن یا کد دار کردن فایل Backup در vs20005 چیه؟
بهترین روش از نظر هر کسی یه چیزیه .روشی که من ازش استفاده میکنم به این شکله :
اگه برنامه WinRar رو نصب کرده باشید در محل نصب برنامه فایلی با نام Rar.exe وجود داره این فایل دارای قابلیتهای زیادیه . من این فایل رو در کنار برنامم کپی میکنم و با استفاده از سویچهای این فایل عمل فشرده سازی رو انجام میدم . مثال :
Using Prs As New Process
Dim SynName As String = Path.GetFileNameWithoutExtension(DataName)
With Prs
.StartInfo.WorkingDirectory = "Synch"
.StartInfo.Arguments = String.Format("a SynDB_{0}.syn -df", DataName)
.StartInfo.FileName = "Rar.exe"
.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
End With
Prs.Start()
End Using
این کد باعث میشه فایل Rar.exe که در پوشه Synch در کنار فایل EXE برنامم قرار داره اجرا بشه .
دستور a برای ایجاد آرشیو استفاده میشه
سوئیچ df باعث میشه بعد از ایجاد ارشیو (عمل فشرده سازی) فایل اصلی پاک بشه
این فایل برای Encrypt کردن فایلهای دیگه قابلیتهای زیادی داره مثلا با Switch -HP میتونید دیتا رو انکریپت کنید یا با Switch -P برای دیتا رمز بزارید .
جهت اطلاعات بیشتر به راهنمای برنامه قسمت command Line Mode مراجعه کنید .
-
1 ضمیمه
من از کد و کلاس زیر برای فشرده سازی و رمز دار کردن فایل backup استفاده کردم امیدوارم مفید واقع شود.
'-----------------compress file and code -----------
Dim filename AsString
filename = sfd.FileName + ".bak"
Try
_ZipUtility.CompressFile(filename, sfd.FileName)
Catch ex As Exception
MessageBox.Show("There was an error compressing the file" & vbCrLf & ex.Message, "Compression Sample", MessageBoxButtons.OK, MessageBoxIcon.Error)
EndTry
که در آن sfd نام فایل بک آپ است که از savefiledialog خوانده می شود.
البته در ادامه با این کد فایل اصلی را نیز حذف می کنیم.
File.Delete(filename)
این هم برای خارج گردن از حالت فشرده
Dim filename AsString
filename = ofd.FileName + ".bak"
Try
_ZipUtility.DecompressFile(ofd.FileName, filename)
Catch ex As Exception
MessageBox.Show("There was an error compressing the file" & vbCrLf & ex.Message, "Compression Sample", MessageBoxButtons.OK, MessageBoxIcon.Error)
EndTry
که اینبار ofd نام فایل است که از openfiledialog خوانده می شود.
فایل کلاس را هم ضمیمه کردم
-
نقل قول: حل مشکل پشتیبان گیری و بازیابی برای همیشه
این رفرنس هایی که گفته بودید به برنامه اضافه کنم رو توی قسمت add refrence رفتم ولی نداشتم ؟؟؟؟؟
sql هم درست نصب کردم !!!!!
این رفرنس هارو از کجا باید بیارم؟؟
-
نقل قول: حل مشکل پشتیبان گیری و بازیابی برای همیشه
نقل قول:
نوشته شده توسط
elmira_63
این رفرنس هایی که گفته بودید به برنامه اضافه کنم رو توی قسمت add refrence رفتم ولی نداشتم ؟؟؟؟؟
sql هم درست نصب کردم !!!!!
این رفرنس هارو از کجا باید بیارم؟؟
برو به این فولدر:
C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies folder
dll های زیر رو به برنامه اضافه کن:
Microsoft.SqlServer.ConnectionInfo.dll
Microsoft.SqlServer.Smo.dll
Microsoft.SqlServer.SqlEnum.dll
Microsoft.SqlServer.SmoEnum.dll
-
نقل قول: حل مشکل پشتیبان گیری و بازیابی برای همیشه
ممنون از راهنماییتون ولی توی این آدرسی که گفتید من فولدر assembelies folder رو ندارم ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
یعنی sql رو درست نصب نکردم ؟؟؟
-
نقل قول: حل مشکل پشتیبان گیری و بازیابی برای همیشه
نقل قول:
نوشته شده توسط
elmira_63
ممنون از راهنماییتون ولی توی این آدرسی که گفتید من فولدر assembelies folder رو ندارم ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
یعنی sql رو درست نصب نکردم ؟؟؟
C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies
folder آخرش نيست
-
نقل قول: حل مشکل پشتیبان گیری و بازیابی برای همیشه
خب همون assembelies هم نیست توی فلدر sdk یه فلدر به نام include و یه فلدر به نام lib
-
نقل قول: حل مشکل پشتیبان گیری و بازیابی برای همیشه
نقل قول:
نوشته شده توسط
elmira_63
خب همون assembelies هم نیست توی فلدر sdk یه فلدر به نام include و یه فلدر به نام lib
از کدوم ورژن SQL استفاده می کنی؟
-
نقل قول: حل مشکل پشتیبان گیری و بازیابی برای همیشه
نقل قول:
نوشته شده توسط
Sub Zero
تنها چیز عجیبی که در این مورد باهاش مواجه شدم این بود که اگر مسیر ماشین پشتیبان گیری (BackupDeviceItem) یه کم طولانی میشد پیغام Failed Backup یا Failed Restore میداد . البته این مشکل فقط در کامپیوتر شرکت که به شبکه وصل بود پیش می یومد . توی کامپیوتر خونه همچین مشکلی نبود . شما هم تست کنید و نتیجه رو به من اطلاع بدید .
درسته...
این پیغامشه:
Restore failed for Server '...'.
-
نقل قول: حل مشکل پشتیبان گیری و بازیابی برای همیشه
سلام. ببخشید من نتونستم Microsoft.SqlServer.Management.Common رو Add کنم ، توی لیست NET. و Common پنجره Add Reference هم نبود . چیکار کنم؟؟
-
1 ضمیمه
نقل قول: حل مشکل پشتیبان گیری و بازیابی برای همیشه
سلام جناب SubZero
من پروسه Backup و Restore شما رو توی VS2005 اجرا کردم و مشکلم حل شد، اما یه نرم افزار هم روی VS2003 دارم که می خوام این کد ها رو به اون هم اضافه کنم ، اما موقع Add Reference فایل های DLL ای که گفتین ، این Error رو نمایش میده و میگه نمی شه Add کنم. چرا؟
-
نقل قول: حل مشکل پشتیبان گیری و بازیابی برای همیشه
کسی نیست این سوال من رو جواب بده؟
-
نقل قول: حل مشکل پشتیبان گیری و بازیابی برای همیشه
نمی تونم جواب قطعی بدم اما احتمال میدم به این خاطر باشه که رفرنسهایی که میخواید اضافه کنید تنها با .Net Framwork 2 به بالا سازگاری داره . مثل این میمونه که شما بخواید یه برنامه که با 2005 نوشتید رو با 2003 باز کنید .
پیشنهاد : متن کامل خطا رو در گوگل سرچ کنید.
-
نقل قول: حل مشکل پشتیبان گیری و بازیابی برای همیشه
ببخشید فضولی من گل کرده ، چرا از این dll استفاده نمی کنید هم راحت تره و هم اینکه با نسخه های مختلف مشکلی نداره
Microsoft SQLDMO Object Library 8.5
یه نمونه از کار با اون رو تو اینجا گذاشتم
https://barnamenevis.org/showthread.php?t=110043
-
نقل قول: حل مشکل پشتیبان گیری و بازیابی برای همیشه
نقل قول:
نوشته شده توسط
Sub Zero
بهترین روش از نظر هر کسی یه چیزیه .روشی که من ازش استفاده میکنم به این شکله :
اگه برنامه WinRar رو نصب کرده باشید در محل نصب برنامه فایلی با نام Rar.exe وجود داره این فایل دارای قابلیتهای زیادیه . من این فایل رو در کنار برنامم کپی میکنم و با استفاده از سویچهای این فایل عمل فشرده سازی رو انجام میدم . مثال :
Using Prs As New Process
Dim SynName As String = Path.GetFileNameWithoutExtension(DataName)
With Prs
.StartInfo.WorkingDirectory = "Synch"
.StartInfo.Arguments = String.Format("a SynDB_{0}.syn -df", DataName)
.StartInfo.FileName = "Rar.exe"
.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
End With
Prs.Start()
End Using
این کد باعث میشه فایل Rar.exe که در پوشه Synch در کنار فایل EXE برنامم قرار داره اجرا بشه .
دستور
a برای ایجاد آرشیو استفاده میشه
سوئیچ
df باعث میشه بعد از ایجاد ارشیو (عمل فشرده سازی) فایل اصلی پاک بشه
این فایل برای Encrypt کردن فایلهای دیگه قابلیتهای زیادی داره مثلا با
Switch -HP میتونید دیتا رو انکریپت کنید یا با
Switch -P برای دیتا رمز بزارید .
جهت اطلاعات بیشتر به راهنمای برنامه قسمت command Line Mode مراجعه کنید .
سلام
آقا این کد شما درست کار نمی کنه خطا هم نمی ده؟!
چند تا مشکل :
آدرس مبدا و منبا رو قید نکردی نام فایل رو در یک متغیر ریختی اما ازش استفاده نکردی؟!
در کل کد بالا کامل نیست؟
help رو هم خوندم اما دقیقا سر در نیاوردم
ببینید من فشرده سازی را با متد های دات نت انجام داددم از 1.6m اورد به 224k و همونو با winrar در ویندوز انجام دادم اومد 127k بخاطر همین می خوام با winrar فشرده کنم و...
-
نقل قول: حل مشکل پشتیبان گیری و بازیابی برای همیشه
Shared Sub Compress()
Using Prs As New Process
Dim SynName As String = Path.GetFileNameWithoutExtension(DataName)
With Prs
.StartInfo.WorkingDirectory = "Synch"
.StartInfo.Arguments = String.Format("a SynDB_{0}.syn {1} -df", SynName, DataName)
.StartInfo.FileName = "Compress.exe"
.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
End With
Prs.Start()
End Using
End Sub
اینم کد درستش .
منظور از SynDB_{0}.syn نام فایلی که در مقصد ایجاد میشه که من به دلخواه خودم پسوند اونو Syn گذاشتم تا توسط ویندوز شناخته نشه DataName هم نام و مسیر فایل مبدا هست .
-
نقل قول: حل مشکل پشتیبان گیری و بازیابی برای همیشه
ممنون
این فکر کنم که مشکل رو حل کنه
-
نقل قول: حل مشکل پشتیبان گیری و بازیابی برای همیشه
با سلام
من از کد شما استفاده کردم و کمی با تغییر اون همونی شد که من می خواستم و کلا حالا برای فشرده کردن هر کاری بخوام با این کد ها می کنم که خیلی عالی هستش
اما حالا می مونه خارج کردن فایل ها از حالت فشرده توسط کد یعنی می خوام وقتی طرف فایلی رو انتخاب می کنه اگه فشرده باشه خودم از اون حالت خارج کنم و بعد بازیابی رو انجام بدم
نتونسم سوئیچ هایی رو که مربوط به unzip هست رو پیدا کنم؟
ممنون می شم که راهنمایی کنید
-
نقل قول: حل مشکل پشتیبان گیری و بازیابی برای همیشه
با عرض معذرت به خاطر تاخیر چند روزه .
از کد زیر برای UnZip استفاده کردم .:
Using Prs As New Process
Dim SynName As String = Path.GetFileName(PathZip)
With Prs
.StartInfo.WorkingDirectory = Path.GetDirectoryName(PathZip)
.StartInfo.Arguments = String.Format("X {0} *.bak Dest", SynName)
.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
.StartInfo.FileName = String.Format("{0}\Synch\Compress.exe", My.Application.Info.DirectoryPath)
End With
Prs.Start()
End Using
فکر کنم همه چی مشخص باشه فقط PathDB كه مسير فايل فشرده رو مشخص میکنه . و اینکه bak.* مشخص ميكنه فقط فایلهای با این پسوند ازفایل استخراج بشن
-
نقل قول: حل مشکل پشتیبان گیری و بازیابی برای همیشه
سلام
آقا دستت درد نکنه
فقیط یه سوال Compress.exe چیه که قبلا هم نوشته بودی که من winrar.exeنوشتم چرا از این استفاده می کنی شما؟
-
نقل قول: حل مشکل پشتیبان گیری و بازیابی برای همیشه
نقل قول:
فقیط یه سوال Compress.exe چیه که قبلا هم نوشته بودی که من winrar.exeنوشتم چرا از این استفاده می کنی شما؟
فايليه كه در محل نصب برنامه Winrar با نام Rar.exe وجود داره و فقط به صورت CommandLine میشه باهاش کار کرد.
-
نقل قول: حل مشکل پشتیبان گیری و بازیابی برای همیشه
نقل قول:
نوشته شده توسط
hamed-p
درسته...
این پیغامشه:
Restore failed for Server '...'.
من هم این مشکل را دارم (توی کامپیوتر خونه) . راه حل ؟
-
نقل قول: حل مشکل پشتیبان گیری و بازیابی برای همیشه
سلام
آقا مصطفی من هنوز نتونستم unzipکنم
کد شما خطا داد و جای Compress من rar.exe نوشتم اما دیگه خطا نداد اما هیچ کاری هم انجام نمی شه؟
چرا فکر می کنید مشکل از کجاست
شما این کد رو تست کردید؟
اگه می شه کد بالا رو با ادرس دهی مستقیم بنویسید تا من ببینم مشکل از پارامترهای ورودی من نباشه
ممنون
-
نقل قول: حل مشکل پشتیبان گیری و بازیابی برای همیشه
من که گفتم از این کد بارها استفاده کردم .راهنماش هم اینو نوشته :
---------------------
Command X - extract files from an archive with full paths
--------------------------------------------------------------------------------
Extract files and folder with full paths. The folder structure, saved in the archive, is completely restored. This is the command line equivalent of the archive management command Extract.
In a similar manner as command e this command can extract files both to the current folder and to a specified folder.
For example, command:
WinRAR x Fonts *.ttf
will extract *.ttf files from the archive Fonts to the current folder, but the command:
WinRAR x Fonts *.ttf NewFonts\
will extract *.ttf files from the archive Fonts to the folder NewFonts
You need to use the trailing backslash as in the example above for denoting the destination folder
-
نقل قول: حل مشکل پشتیبان گیری و بازیابی برای همیشه
سلام
تمام مشکلات Restore سر این یه خطه کده :
SqlConnection.ClearAllPools()
اینم نمونه کد
Dim strSourcePath As String = Txt_SourcePath.Text + "\myDbBackUp.bak"
Dim strData As String = txt_desPath.Text.Trim + "\myDb_Data.mdf"
Dim strLog As String = txt_desPath.Text.Trim + "\myDb_Data.ldf"
Dim strsql As String = "RESTORE DATABASE TaxiService FROM DISK = '" & strSourcePath & "' " & _
" With Move 'myDbData_Data' TO '" & strData & "', " & _
" Move'myDBData_log' TO '" & strLog & "'"
'Exit Sub
Dim servername As String = "."
Dim db_UserName As String = "sa"
Dim db_Userpass As String = "123456"
Dim StrConn As String = "Server=" & servername & ";Database=Master;User ID=" & db_UserName & " ; Password=" & db_Userpass & ";"
Dim cnn As New SqlConnection(StrConn)
Dim cmdDetach As New SqlCommand("EXEC sp_detach_db 'myDb', 'true'", cnn)
Dim cmdRestore As New SqlCommand(strsql, cnn)
Try
SqlConnection.ClearAllPools()
cnn.Open()
cmdDetach.ExecuteNonQuery()
cmdRestore.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.Message)
Finally
If (Not cmdRestore Is Nothing) Then cmdRestore.Dispose()
If (Not cmdDetach Is Nothing) Then cmdDetach.Dispose()
If cnn.State <> ConnectionState.Closed Then cnn.Dispose()
End Try
مشکل من که حل شد امیدوارم مشکل شما هم بااین کد حل بشه .
نیازی هم به dll هایی که دوستان گفتند نداره.
موفق باشید
-
نقل قول: حل مشکل پشتیبان گیری و بازیابی برای همیشه
نقل قول:
نوشته شده توسط
hamed-p
درسته...
این پیغامشه:
Restore failed for Server '...'.
سلام دوستان یه چیز جالب ربطی به طولانی بودن مسیر نداره مشکل باید جایه دیگه باشه
من همین کد رو در یک برنامه با sql2000 تست کردم مشکلی نبود اما همون کد رو با اس کیو ال2005 تست کردم در بعضی از مسیر ها همین خطا رو می داد مثل مسیر دسکتاپ من (C:\Documents and Settings\Hamed\Desktop\) ویا مسیر ریشه یک درایو مثل(c:/) هم همین مشکل رو دارد اما در مسیر زیر کار می کند c:\bk
فکر کنم یک اشکالی در sql2005 باشه نسخه 2005 من استاندارد ادیشن هست
-
نقل قول: حل مشکل پشتیبان گیری و بازیابی برای همیشه
سلام
من یک فرم دارم که بر روی آن یک datagridview قرار دارد که در رویداد فرم لود از دیتابیس مقدار می
گیرد
قسمت Backup گیری نیز در این فرم قرار دارد که وقتی می خواهم backup بگیرم پیغام می دهد که
دارد از دیتابیس استفاده می شود این هم کدش ( راستی وقتی کد درون فرم لود مربوط به مقدار گیری
datagridview را پاک می کنم جواب می دهد )
Dim server As New SQLDMO.SQLServer2
Dim database As SQLDMO.Database2
Dim backup As New SQLDMO.Backup2
Dim restor As New SQLDMO.Restore2 Private Sub restore_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles restore.Click
Dim openfiledialog1 As New OpenFileDialog
Dim path As String
server = New SQLDMO.SQLServer2
server.LoginSecure = True
openfiledialog1.Filter = "(*.bak)|*.bak"
openfiledialog1.Title = "تعیین فایل برای بازیابی" If openfiledialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
server.Connect(My.Computer.Name)
database = server.Databases.Item("phone")
restor.Database = database.Name
path = openfiledialog1.FileName
restor.Files = path
restor.ReplaceDatabase = True
restor.SQLRestore(server)
server.DisConnect()
restor = Nothing
server = Nothing
MsgBox("restor انجام شد")
End IfEnd Sub
لطفا به من کمک کنید متشکرم:لبخندساده:
-
نقل قول: حل مشکل پشتیبان گیری و بازیابی برای همیشه
سلام
مشکلی که بعضی ها گفته بودن پیام Restore failed for Server '...'. میده علتش یه بخش اشتباه در کد restore که sub zero نوشته.
باید به جای .Database = DataBaseName.bak بنویسیم .Database = DBName
-
نقل قول: حل مشکل پشتیبان گیری و بازیابی برای همیشه
سلام
من تو برتامم هم backup می گیرم هم restore انجام میدم
حالا میخوام یه قسمتی بهش اضافه کنم با عنوان backup گیری اتوماتیک که بشه فاصله زمانی و ساعت backup گیری رو اپراتور مشخص کنه
البته میدونم که توی اسکیوال به راحتی میشه اینکارو انجام داد ولی من نمی تونم به کاربرم بگم باید حتما اسکیوال رو بلد باشی و میخوام توی برنامه این کارو انجام بدم اگه امکانش باشه
به نظر خودم گفتم شاید بشه اینکارو توی اسکیوال انجام داد بعد کدش رو از اسکیوال استخراج کرد و تو وی بی ازش استفاده کرد
-
نقل قول: حل مشکل پشتیبان گیری و بازیابی برای همیشه
با سلام
وقتی از برنامه و روی شبکه می خواهم پشتیبان بگیرم پیغام خطا رو میده.
بانک در روی یک کامپیوتر دیگر است و من از طریق شبکه این کار را می کنم.
Backup failed for Server
تمامی موارد بالا را هم چک کردم.
sql من 2000 است.
-
نقل قول: حل مشکل پشتیبان گیری و بازیابی برای همیشه
نقل قول:
نوشته شده توسط
rezaei manesh
سلام دوستان یه چیز جالب ربطی به طولانی بودن مسیر نداره مشکل باید جایه دیگه باشه
من همین کد رو در یک برنامه با sql2000 تست کردم مشکلی نبود اما همون کد رو با اس کیو ال2005 تست کردم در بعضی از مسیر ها همین خطا رو می داد مثل مسیر دسکتاپ من (C:\Documents and Settings\Hamed\Desktop\) ویا مسیر ریشه یک درایو مثل(c:/) هم همین مشکل رو دارد اما در مسیر زیر کار می کند c:\bk
فکر کنم یک اشکالی در sql2005 باشه نسخه 2005 من استاندارد ادیشن هست
جناب رضایی منش بالاخره فهمیدم منشا این مشکل کجاست . ببینید در حالت پیش فرض Logon Type سرور به صورت Network Services ست شده برای همین وقتی میخواد به درایو ویندوز دسترسی داشته باشه این خطا رو میده ( فقط درایو ویندوز) برای حل این مشکل باید Logon Type رو روی Local System ست کنید مشکل حل میشه .(از طریق برنامه SQL Server Configuration Manager )
اگر هم قصد دارید تحت شبکه پشتبان گیری و بازگردانی رو انجام بدید سعی کنید برنامه رو توی درایوی غیر از درایو ویندوز نصب کنید چرا که دسترسی به درایو ویندوز ، تحت شبکه یه سری محدودیتها داره
برای اینکه دقیقا متوجه شید چه چیزی باعث بروز مشکل میشه از کد زیر در قسمت Catch استفاده کنید.:
Catch ex As Exception
MsgBox( ex.InnerException.InnerException.Message, 48, "پیغام")
End Try
-
نقل قول: حل مشکل پشتیبان گیری و بازیابی برای همیشه
سلام
خیلی خوب می شه اگه حل بشه من امشب تست می کنم بهت می گم
ممنون از اینکه گیر و گور کار رو در می یاری حقیقتش من خیلی گشتم نشد