PDA

View Full Version : حرفه ای: بکاپ کیری sql



hamidrezax1
یک شنبه 21 شهریور 1400, 17:07 عصر
سلام دوستان وقت بخیر من یک دیتابیس دارم که توش عکس و فیلم ذخیره شده و برای همین حجمش بالاست.حالا وقتی میخوام این دیتابیس بکاپ بگیریم command timeout چونه int هستش و حدود 9 دقیقه رو میتونه پشتیبانی کنه.راهی هست که بشه کانکشنم رو بیشتر از 9 دقیقه باز نگه دارم؟

mehran6764
یک شنبه 21 شهریور 1400, 18:12 عصر
بهتر نیست به جای اینکه عکس و فیلم رو داخل دیتابیس ذخیره کنید ، اون فایل ها ر داخل پوشه ای ذخیره کنید و آدرس فایل رو در دیتابیس ذخیره کنید؟!

hamidrezax1
دوشنبه 22 شهریور 1400, 08:24 صبح
بهتر نیست به جای اینکه عکس و فیلم رو داخل دیتابیس ذخیره کنید ، اون فایل ها ر داخل پوشه ای ذخیره کنید و آدرس فایل رو در دیتابیس ذخیره کنید؟!
سلام دوست عزیز من به شخصه این موضوع رو میدونم.اما الان دنبال راهکار هستم

mazoolagh
دوشنبه 22 شهریور 1400, 10:46 صبح
میتونین بک آپ گرفتن رو به خود sql server واگذار کنین (با استفاده از maintenance plan)

mehran6764
دوشنبه 22 شهریور 1400, 12:31 عصر
سلام دوست عزیز من به شخصه این موضوع رو میدونم.اما الان دنبال راهکار هستم

خوب من سوال پرسیدم و دوس داشتم بفرمایید که دلیل اینکه میخوایین فایل تو دیتابیس ذخیره بشه چی هست ؟
چه مزیتی داره تا یاد بگیرم . ممنون

hamidrezax1
دوشنبه 22 شهریور 1400, 16:22 عصر
دوست عزیز بعضی وقتها دیتابیس و برنامه مال شما نیست و شما باید برای اون راه حل خوبی ارائه بدین.برای همین عرض کردم.الان دقیقا مشکل اینجاست که این اشتباه انجام شده و شما باید راهکاری پیدا کنید

hamidrezax1
دوشنبه 22 شهریور 1400, 16:26 عصر
دوست عزیز ممنون از راهنمایتون اما راهی هست که بشه با دستورات کانکشنی بکاپ گرفت و کار رو به sql واگذار نکرد.

a_mohammadi_m
چهارشنبه 24 شهریور 1400, 07:41 صبح
سلام
به این زیر برنامه پارامترهای لازم رو بفرستید
دقت کنید که کانکشن استرینگ مورد استفاده با اختیارات sysadmin باشه ( مثلا حالت Windows Autentication یا با sa )

Public Sub DbBackupRestore(ByVal strAction As String, ByVal strDbName As String, ByVal strPath As String)

Dim cmd As SqlCommand

'Backup or Restore DB
Dim con = New SqlConnection(LocalDbConnection)
con.Open()
Dim strQuery As String
If strAction = "Backup" Then
strDbBakupFilename = GetDbBackupName(strDbName)
strQuery = "BACKUP DATABASE " & strDbName & " TO DISK='" & strPath & "" & strDbBakupFilename & "'"

cmd = New SqlCommand(strQuery, con)
cmd.ExecuteNonQuery()

ElseIf strAction = "Restore" Then
Dim objdlg As New OpenFileDialog
objdlg.FileName = strDbName
objdlg.ShowDialog()
strDbBakupFilename = objdlg.FileName
strQuery = "RESTORE DATABASE " & strDbName & " FROM DISK='" & strDbBakupFilename & "'"

cmd = New SqlCommand(strQuery, con)
cmd.ExecuteNonQuery()

End If

End Sub

hamidrezax1
پنج شنبه 25 شهریور 1400, 16:54 عصر
سلام دوست عزیز مشکل من بکابگیری و ریستور کردن دیتابیس نیست.شما زمانی که یک کانکشن رو باز میکنید حدود 9 دقیقه(بخاطر اینتیجر بودن) میتونه بدون ارور با دستور command timeout باز نگه دارید.اما زمانی که بیشتر طول بکشه ارور تایم اوت به شما میده.آیا راه دیگه ای وجود داره؟

a_mohammadi_m
چهارشنبه 07 مهر 1400, 13:27 عصر
سلام
با افزودن Connection Timeout=0 در Connection String میشه مدت ارتباط رو بی نهایت کرد.
البته برای بکاپ گیری تست نکردم

hamidrezax1
چهارشنبه 07 مهر 1400, 15:24 عصر
ممنونم دوست عزیز تست میکنم خدمتتون اعلام میکنم

hamidrezax1
پنج شنبه 15 مهر 1400, 09:22 صبح
ممنونم دوست عزیز جولب داد:تشویق: