reza6384
سه شنبه 30 مهر 1387, 14:47 عصر
سلام دوستان.
سوالم در نگاه اول تکراری به نظر میرسه. اما در تاپیک های قبلی به نتیجه نرسیدم.
یک تاپیک به نام حل مشکل پشتیبان گیری و بازیابی برای همیشه رو SubZero ایجاد کرد و با اون کد تونستم توی VB.NET 2005 برای برنامه ام Backup و Restore درست کردم.
اما مشکل من در VB.Net 2003 هست.
این کدی هست که دارم :
مقدار _BackupFile توسط FileDialog داده میشه.
PublicClass frBackupRestore
Inherits System.Windows.Forms.Form
Dim BackupTice AsString
'-------------------------------------------------
Dim oSQLServer AsNew SQLDMO.SQLServer
DimWithEvents oBackup AsNew SQLDMO.Backup
DimWithEvents oRestore AsNew SQLDMO.Restore
'----------------------------------------------
Dim _INSTANCE AsString = "."
Dim _USER AsString = "sa"
Dim _PWD AsString = ""
Dim _BACKUPFILE AsString = ""
Dim _DATABASE AsString = "Retail"
PrivateSub doBackup()
With oBackup
.Files = _BACKUPFILE
.Database = _DATABASE
.BackupSetName = "MyRetailBackup"
.BackupSetDescription = "Backup from VB.NET application"
.SQLBackup(oSQLServer)
EndWith
MessageBox.Show("Backup Completed Sucessfully", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information)
EndSub
PrivateSub doRestore()
With oRestore
'.Devices = "[NorthwindBackup]"
.Files = _BACKUPFILE
.Database = _DATABASE
.ReplaceDatabase = True
.SQLRestore(oSQLServer)
EndWith
MessageBox.Show("Restore Completed Successfully", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information)
EndSub
PrivateSub frmBackupRestore_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load
Data.Connection.Connection.Close()
Data.Connection.Connection.Dispose()
oSQLServer.Connect(".", "sa", "")
EndSub
EndClass
در این برنامه، یک NameSpace هست به نام Data و کانکشن دیتابیس برنامه از طریق
Data.Connection.Connection
قابل دسترسیه. یعنی در فرم Login این کانکشن مقداردهی میشه و open میشه.
من با این کد Backup رو انجام میدم. اما برای Restore کردن error زیر رو نمایش میده :
من نمی دونم چرا با اینکه در FormLoad می نویسم Data.Connection.Connection.Close
و به علاوه وقتی ConnectionState رو قبل از Restore کردن چک میکنم نشون میده که Closed هست ( هر جا چک میکنم میگه Closed هست ) بازهم وقت Restore کردن میگه Database is in use.
در ضمن اگر بنویسم Data.Connection.Connection.Open و بعد هم Connection.State رو چک کنم میگه Closed و واسه همین نمی تونم از Data.Connection.Connection.ChangeDatabase استفاده کنم .
نکته بعدی اینه که اگر فرم ذخیره و بازیابی رو به عنوان StartUp Form انتخاب کنم این کار به درستی انجام میشه.
تقریبا دیگه دارم دیوونه میشم. :عصبانی++::عصبانی++:
سوالم در نگاه اول تکراری به نظر میرسه. اما در تاپیک های قبلی به نتیجه نرسیدم.
یک تاپیک به نام حل مشکل پشتیبان گیری و بازیابی برای همیشه رو SubZero ایجاد کرد و با اون کد تونستم توی VB.NET 2005 برای برنامه ام Backup و Restore درست کردم.
اما مشکل من در VB.Net 2003 هست.
این کدی هست که دارم :
مقدار _BackupFile توسط FileDialog داده میشه.
PublicClass frBackupRestore
Inherits System.Windows.Forms.Form
Dim BackupTice AsString
'-------------------------------------------------
Dim oSQLServer AsNew SQLDMO.SQLServer
DimWithEvents oBackup AsNew SQLDMO.Backup
DimWithEvents oRestore AsNew SQLDMO.Restore
'----------------------------------------------
Dim _INSTANCE AsString = "."
Dim _USER AsString = "sa"
Dim _PWD AsString = ""
Dim _BACKUPFILE AsString = ""
Dim _DATABASE AsString = "Retail"
PrivateSub doBackup()
With oBackup
.Files = _BACKUPFILE
.Database = _DATABASE
.BackupSetName = "MyRetailBackup"
.BackupSetDescription = "Backup from VB.NET application"
.SQLBackup(oSQLServer)
EndWith
MessageBox.Show("Backup Completed Sucessfully", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information)
EndSub
PrivateSub doRestore()
With oRestore
'.Devices = "[NorthwindBackup]"
.Files = _BACKUPFILE
.Database = _DATABASE
.ReplaceDatabase = True
.SQLRestore(oSQLServer)
EndWith
MessageBox.Show("Restore Completed Successfully", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information)
EndSub
PrivateSub frmBackupRestore_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load
Data.Connection.Connection.Close()
Data.Connection.Connection.Dispose()
oSQLServer.Connect(".", "sa", "")
EndSub
EndClass
در این برنامه، یک NameSpace هست به نام Data و کانکشن دیتابیس برنامه از طریق
Data.Connection.Connection
قابل دسترسیه. یعنی در فرم Login این کانکشن مقداردهی میشه و open میشه.
من با این کد Backup رو انجام میدم. اما برای Restore کردن error زیر رو نمایش میده :
من نمی دونم چرا با اینکه در FormLoad می نویسم Data.Connection.Connection.Close
و به علاوه وقتی ConnectionState رو قبل از Restore کردن چک میکنم نشون میده که Closed هست ( هر جا چک میکنم میگه Closed هست ) بازهم وقت Restore کردن میگه Database is in use.
در ضمن اگر بنویسم Data.Connection.Connection.Open و بعد هم Connection.State رو چک کنم میگه Closed و واسه همین نمی تونم از Data.Connection.Connection.ChangeDatabase استفاده کنم .
نکته بعدی اینه که اگر فرم ذخیره و بازیابی رو به عنوان StartUp Form انتخاب کنم این کار به درستی انجام میشه.
تقریبا دیگه دارم دیوونه میشم. :عصبانی++::عصبانی++: