ورود

View Full Version : سوال: نحوه ی Atach کردن بانک به sql با کد ویژوال؟



ghasemweb
چهارشنبه 16 تیر 1389, 08:19 صبح
سلام دوستان.
من به تازگی سعادت پیدا کردم که تو انجمن برنامه نویسی عضو بشم این هم اولین تایپیک بنده هستش که میخواستم کمکم کنید.
سوال: ما که برنامه بانک اطلاعاتی با ویژوال می نویسیم و می سازیم بانکشو داخل sql طراحی میکنیم و تا زمانی که برنامه داخل سیستم خودمون اجرا میشه و یا برنامه sql server حذف نشده باشه مسکلی نداریم ولی وقتی میخواهیم برنامه و بانک رو به یک سیستم دیگه منتقل کنیم باید بانکشو به صورت دستی در داخل برنامه Enterprise Manager متصل کنیم (atach).
حالا کسی سورسی یا روشی رو سراغ داره که بانکمون تو خود برنامه ویژوال به sql متصل بشه؟

__________________________________________________ ___________

الهی سینه ای ده آتش افروز / در آن سینه دلی و آن دل همه سوز
هر آن دل را که سوزی نیست دل نیست/ دل افسرده به غیر از آب و گل نیست

ab_ba
چهارشنبه 16 تیر 1389, 08:36 صبح
Option Explicit
Public bConnected As Boolean
Public oSQLServer As SQLDMO.SQLServer2
Public oBackup As SQLDMO.Backup2
Public oRestore As SQLDMO.Restore2

Dim WithEvents oBackEvents As SQLDMO.Backup2
Dim WithEvents oRestEvents As SQLDMO.Restore2
Private Sub Class_Initialize()
bConnected = False
Set oSQLServer = Nothing
Set oBackup = Nothing
Set oRestore = Nothing
Set oBackEvents = Nothing
Set oRestEvents = Nothing
End Sub

Private Sub Class_Terminate()
If Not oBackEvents Is Nothing Then Set oBackEvents = Nothing
If Not oRestEvents Is Nothing Then Set oRestEvents = Nothing
If Not oBackup Is Nothing Then Set oBackup = Nothing
If Not oRestore Is Nothing Then Set oRestore = Nothing
If bConnected Then Me.Disconnect
If Not oSQLServer Is Nothing Then Set oSQLServer = Nothing
End Sub
Public Function attachdatabase(s, s1 As String) As Boolean
Dim ss As String
attachdatabase = True
ss = oSQLServer.AttachDBWithSingleFile(s, s1)
If ss = "" Then
attachdatabase = True
Else
attachdatabase = False
msgbox.Show "not attach"
End If
End Function
Public Sub Connect(server As String, user As String, password As String, integrated As Boolean)
On Error GoTo errHandler
If bConnected Then Me.Disconnect
If oSQLServer Is Nothing Then Set oSQLServer = New SQLDMO.SQLServer2
oSQLServer.LoginSecure = integrated
If (integrated) Then oSQLServer.Connect server Else oSQLServer.Connect server, user, password
bConnected = True
Exit Sub
errHandler:
' HandleError "classbackup_restore", "connect", err.number, err.Description
msgbox.show err.Description
Exit Sub
End Sub

Public Sub Disconnect()
On Error GoTo errHandler
If bConnected Then
oSQLServer.Disconnect
bConnected = False
End If
Exit Sub
errHandler:
' HandleError "classbackup_restore", "Disconnect", err.number, err.Description
msgbox.show err.Description
Exit Sub
End Sub

Public Sub DropDatabase(database As String)
On Error GoTo errHandler
Dim m As Byte

'If Not bConnected Then m = ShowMsg("Not connected", vbInformation)
Dim oDatabase As SQLDMO.Database2
Set oDatabase = oSQLServer.Databases(database)
'If Not oDatabase Is Nothing Then oDatabase.Remove Else m = ShowMsg("database does not exist", vbInformation)
If Not oDatabase Is Nothing Then Set oDatabase = Nothing
Exit Sub
errHandler:
' HandleError "classbackup_restore", "DropDatabase", err.number, err.Description
msgbox.show err.Description

Exit Sub
End Sub

Public Function BackupDatabaseToFile(database As String, filename As String) As Boolean
On Error GoTo errHandler
Dim m As Byte
BackupDatabaseToFile = True
'If Not bConnected Then m = ShowMsg("Not connected", vbInformation)
If oBackup Is Nothing Then Set oBackup = New SQLDMO.Backup2
If oBackEvents Is Nothing Then Set oBackEvents = oBackup
oBackup.database = database
oBackup.Files = filename
Call oBackup.SQLBackup(oSQLServer)
Set oBackEvents = Nothing
Set oBackup = Nothing
Exit Function
errHandler:
' HandleError "classbackup_restore", "BackupDatabaseToFile", err.number,
BackupDatabaseToFile = False
msgbox.show err.Description
Exit Function
End Function

Public Function RestoreDatabaseFromFile(database As String, filename As String) As Boolean
On Error GoTo errHandler
Dim m As Byte

'If Not bConnected Then m = ShowMsg("Not connected", vbInformation)
If oRestore Is Nothing Then Set oRestore = New SQLDMO.Restore2
If oRestEvents Is Nothing Then Set oRestEvents = oRestore
oRestore.database = database
oRestore.Files = filename
oRestore.DatabaseFiles = filename
oRestore.DatabaseFileGroups = filename
Call oRestore.SQLRestore(oSQLServer)

Set oRestEvents = Nothing
Set oRestore = Nothing
RestoreDatabaseFromFile = True
Exit Function
errHandler:
RestoreDatabaseFromFile = False
msgbox.show err.Description
Exit Function
End Function
Private Sub oBackEvents_Complete(ByVal Message As String)
'not erase
End Sub
Private Sub oBackEvents_NextMedia(ByVal Message As String)
'not erase
End Sub
Private Sub oBackEvents_PercentComplete(ByVal Message As String, ByVal Percent As Long)
'not erase
End Sub
Private Sub oRestEvents_Complete(ByVal Message As String)
'not erase
End Sub
Private Sub oRestEvents_NextMedia(ByVal Message As String)
'not erase
End Sub
Private Sub oRestEvents_PercentComplete(ByVal Message As String, ByVal Percent As Long)
'not erase
End Sub

ghasemweb
چهارشنبه 16 تیر 1389, 23:34 عصر
من موفق نشدم تو ویژوال این تکه کدهارو عملی کنم فکر کنم باید چندتا رفرنس و کامپوننت اضافه کنم اگه لطف کنید بگید کدوما هستن؟

ENG_Torshani
جمعه 18 تیر 1389, 11:46 صبح
جستجو کنید هزار بار پرسیده شده

ghasemweb
دوشنبه 21 تیر 1389, 19:44 عصر
شرمنده كه اينو ميگم ولي من نتونستم چيزي پيدا كنم . خواهشا كمك كنيد لازمه

ab_ba
چهارشنبه 23 تیر 1389, 13:45 عصر
microsoft sqldmo object library در رفرنس add کن

ghasemweb
پنج شنبه 24 تیر 1389, 00:07 صبح
بسیار متشکرم . مشکلم حل شد دمتون گرم مخصوصا شما ab_ba (http://barnamenevis.org/forum/member.php?u=9344)و بقیه دوستان . . .