PDA

View Full Version : سوال: مشکل Backup گیر SQL در VB6



sammy
شنبه 15 مهر 1391, 17:54 عصر
من یه برنامه نوشتم و همه چیزش درست کار میکنه، فقط مشکل اینه که نمیتونم از دیتاش Backup بگیرم.
پست ها و کدهای این سایت رو هم گشتم ولی کار نمی کنن.
میشه خواهش کنم اگه کسی sampleی داره که کار میکنه اینجا بزاره.

با تشکر.

SlowCode
شنبه 15 مهر 1391, 18:07 عصر
2 تا راه داری:
1- قبلا یه ماجولی تو سایت دیده بودم که همین کار رو انجام میداد(باید بگردم پیداش کنم)
2- وقتی میخوای بک آپ بگیری تمام اتصالاتبه دیتابیس رو قطع کنی بعد یه کپی ازش بگیری، که به احتمال زیاد مشکلاتی به وجود میاره. ولی اگه فقط هنگام خروج پشتیبان گیری کنی هیچ مشکلی پیش نمیاد.

sammy
شنبه 15 مهر 1391, 18:34 عصر
درسته، من راه دوم رو سعی میکنم برم. ولی هر کدی مینویسم که دیتا بیس رو اول detach کنه تا من بتونم کپی بگیرم نمیشه

SlowCode
شنبه 15 مهر 1391, 20:11 عصر
اگه با ado کار میکنی connectionString رو خالی کن و واسه DAO هم DataBaseName رو پاک کن.
البته شاید نیازی به این کار نباشه چون من الان امتحان کردم و بدون مشکل کپی کرد، با کد پایین امتحان کردی؟
FileCopy "D:\Program\Data.mdb", "C:\a.mdb"

مشکلت کجای بک آپ گیریه؟

sammy
شنبه 15 مهر 1391, 22:30 عصر
آقا محسن همونطوریکه تو تاپیک نوشتم SQL رو میگما،
این کدی که شما زحمت کشیدی نوشتی مال Access
ولی بازم مرسی

hr_3303
جمعه 21 مهر 1391, 18:48 عصر
این کد بکاپ گیری از دیتابیس هست



Dim conn As New ADODB.Connection
Dim SqlTxt As String
conn.CursorLocation = adUseClient
conn.ConnectionString = mdb_path
conn.Open
Dim namebackup As String
Dim s As String
Dim n As Integer
namebackup = DateNum1.CurrentDate
s = MainForm.LTime
n = InStr(1, s, ".", vbTextCompare)
If n <> 3 Then
n = InStr(1, s, ":", vbTextCompare)
End If
n1 = Left(s, n - 1)
n1 = n1 & ""
n2 = InStr(n + 1, s, ".", vbTextCompare)
If n2 <> 6 Then
n2 = InStr(n + 1, s, ":", vbTextCompare)
End If
n3 = Mid(s, n + 1, n2 - (n + 1))
n1 = n1 & n3
n3 = InStr(n2 + 0, s, ".", vbTextCompare)
If n3 <> 6 Then
n3 = InStr(n2 + 0, s, ":", vbTextCompare)
End If
n3 = Mid(s, n3 - 4, n3 - (n2 + 0))
n1 = n1 & n3
n2 = InStrRev(s, ".", -1)
If n2 <> 6 Then
n2 = InStrRev(s, ":", -1)
End If
n = Mid(s, n2 + 1, 3)
n1 = n1 & n
SqlTxt = " BACKUP DATABASE DB TO DISK = N'D:\IC\backup\" & namebackup & " " & n1 & ".bak' WITH NOFORMAT, NOINIT, NAME = N'DB-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10"
Dim ado As New ADODB.Recordset
ado.Open SqlTxt, conn, adOpenDynamic, adLockPessimistic
MsgBox "بشتیبان گیری با موفقیت انجام شد", vbOKOnly



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



conn.CursorLocation = adUseClient
conn.ConnectionString = mdb_path
conn.Open
namebackup = DateNum1.CurrentDate

path = Text1.Text
SqlTxt = " USE master;" + "ALTER DATABASE db SET SINGLE_USER WITH ROLLBACK IMMEDIATE;" + " RESTORE DATABASE db FROM DISK = '" & path & "' with replace ;"
On Error Resume Next
ado.Open SqlTxt, conn, adOpenDynamic, adLockPessimistic
ado.Open SqlTxt, conn, adOpenDynamic, adLockPessimistic
j = 9
MsgBox "بازیابی اطلاعات با موفقیت انجام شد", vbOKOnly
UN1 = 1

alizanganeh
چهارشنبه 01 آذر 1391, 08:33 صبح
آقا این کد هایی که دادید برای پشتیبان گیری و بازگردانی آن در بانک اکسز هستش
میشه کد برای sql 2000 رو هم بدید

ممنون