vb6系統安裝-初始化SQLserver數據庫

需建Module1
Option Explicit
Public goSQLServer As SQLDMO.SQLServer
Public gShowServerEvents As Boolean
Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Public Cn As New ADODB.Connection

新建一個Form,Copy以下代碼

VERSION 5.00
Begin VB.Form Form1
   BorderStyle     =   1  'Fixed Single
   Caption         =   "初始化系統數據庫..."
   ClientHeight    =   3360
   ClientLeft      =   45
   ClientTop       =   330
   ClientWidth     =   5340
   Icon            =   "Form1.frx":0000
   LinkTopic       =   "Form1"
   LockControls    =   -1  'True
   MaxButton       =   0   'False
   MinButton       =   0   'False
   ScaleHeight     =   3360
   ScaleWidth      =   5340
   StartUpPosition =   2  '屏幕中心
   Begin VB.CommandButton Command2
      BackColor       =   &H00FFFFFF&
      Caption         =   "正在查找SQLSERVER數據庫服務器,請稍候..."
      BeginProperty Font
         Name            =   "宋體"
         Size            =   9
         Charset         =   134
         Weight          =   700
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   690
      Left            =   540
      MaskColor       =   &H00FFFFFF&
      TabIndex        =   5
      Top             =   975
      Width           =   4290
   End
   Begin VB.CommandButton Command1
      Caption         =   "退出"
      BeginProperty Font
         Name            =   "宋體"
         Size            =   10.5
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   375
      Left            =   4230
      TabIndex        =   3
      Top             =   360
      Width           =   930
   End
   Begin VB.ListBox List1
      BeginProperty Font
         Name            =   "宋體"
         Size            =   10.5
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   2370
      Left            =   180
      TabIndex        =   2
      Top             =   855
      Width           =   4965
   End
   Begin VB.ComboBox TxtServer
      BeginProperty Font
         Name            =   "宋體"
         Size            =   12
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   360
      Left            =   180
      TabIndex        =   1
      Top             =   360
      Width           =   2805
   End
   Begin VB.CommandButton Cmdcreate
      Caption         =   "確定"
      BeginProperty Font
         Name            =   "宋體"
         Size            =   10.5
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   375
      Left            =   3135
      TabIndex        =   0
      Top             =   360
      Width           =   930
   End
   Begin VB.Label Label1
      AutoSize        =   -1  'True
      BackStyle       =   0  'Transparent
      Caption         =   "請在下框中輸入SQL2000服務器名稱:"
      Height          =   180
      Left            =   150
      TabIndex        =   4
      Top             =   120
      Width           =   2880
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private oSQLServerDMOApp As SQLDMO.Application
Public oSQLServer As SQLDMO.SQLServer
Attribute oSQLServer.VB_VarHelpID = -1
Public WithEvents Ores As SQLDMO.Restore
Attribute Ores.VB_VarHelpID = -1

Private Sub Command1_Click()
    End
End Sub

Private Sub Form_Activate()
    On Error GoTo Errorhandle
    Me.MousePointer = 12
    Command2.Visible = True
    Me.Refresh
    Set oSQLServerDMOApp = New SQLDMO.Application
    gShowServerEvents = False
    Dim namX As NameList
    Set namX = oSQLServerDMOApp.ListAvailableSQLServers
    For I = 1 To namX.Count
      TxtServer.AddItem namX.Item(I)
    Next
    TxtServer.ListIndex = 0
    Command2.Visible = False
    Me.MousePointer = 0
    Exit Sub
Errorhandle:
    Command2.Visible = False
    MsgBox "本程序只能在安裝好SQLSERVER數據庫的電腦上執行,如已安裝好SQL,請重新啓動電腦再執行 !", vbCritical, "幫助信息"
    MsgBox "如已安裝好SQLserver,請在框中直接輸入SQL服務器名稱 !", vbCritical, "幫助信息"
End Sub

Private Sub Form_Load()
    '查找數據庫 服務器-------------
    Dim rtn
    rtn = SetWindowPos(Me.hWnd, -1, 0, 0, 0, 0, 3)
    Dim I As Integer
    On Error GoTo Errorhandle
   
    '建數據庫文件目錄
    If Len(Dir("D:/DataBase", vbDirectory)) = 0 Then MkDir "D:/DataBase"
  
    Exit Sub
Errorhandle:
    MsgBox "本程序只能在安裝好SQLSERVER數據庫的電腦上執行,如已安裝好SQL,請重新啓動電腦再執行 !", vbCritical, "錯誤信息"
End Sub

Private Sub cmdCreate_Click()
    Dim I As Integer
    Dim sDatabaseName As String
    Dim DataFile As String
    Dim sSQL As String
    Dim oDatabase As SQLDMO.Database
    Dim oDBFileData As New SQLDMO.DBFile
    Dim oLogFile As New SQLDMO.LogFile
    Set oSQLServer = New SQLDMO.SQLServer
    List1.Clear
   
    On Error GoTo ErrorHandler
   
    If Len(Trim(TxtServer)) = 0 Then
        MsgBox "請輸入SQL服務器名稱!", vbCritical, "幫助信息"
        Exit Sub
    End If
   
    '查找源文件是否存在
    If Dir(App.Path & "/mrpii.bak") = "" Then
        MsgBox "數據源文文件不存在!(" & App.Path & "/mrpii.bak)", vbCritical, "幫助信息": GoTo Proc_exit
    End If
       
    With oSQLServer
        .LoginSecure = False
        .AutoReConnect = False
        .Connect TxtServer.Text, "sa", ""
    End With
   
    Set goSQLServer = oSQLServer
   
    sDatabaseName = "mrpii"   '數據庫名稱
    DataFile = App.Path & "/mrpii.bak"   '備份文件名稱
   
    If sDatabaseName = "" Then Exit Sub
    For Each oDatabase In goSQLServer.Databases
        If Not oDatabase.SystemObject Then
            If sDatabaseName = oDatabase.Name Then
                List1.AddItem "數據庫已經存在。。。。。。"
                List1.AddItem "不能初始化。。。。。。"
                Me.Refresh
                GoTo Proc_exit
            End If
        End If
    Next
    List1.AddItem "數據庫較檢,準備加載數據庫。。。。。。。"
    Me.Refresh
    Me.MousePointer = 12
    If Cn.State = 1 Then Cn.Close
    Cn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=master;Data Source=" & TxtServer.Text
    List1.AddItem "數據庫加載進行中,需一、二分鐘。。。。。"
    Me.Refresh

    '恢復數據庫
    sSQL = "RESTORE DATABASE mrpii FROM DISK = '" & DataFile & "'" _
           & " WITH MOVE 'mrpii_data' TO 'd:/database/mrpii_data.mdf' ," & Chr(10) _
           & " MOVE 'mrpii_log' TO  'd:/database/mrpii_log.ldf'"
   
    Cn.Execute sSQL
   
    List1.AddItem "數據庫初始化完成。。。。。。。"
    Me.Refresh
   
    '新建登陸名
    Set rs = Cn.Execute("SELECT * FROM master..sysxlogins WHERE name='MRPIIADMIN'")
    If rs.EOF Then
        Cn.Execute " EXEC sp_addlogin 'MRPIIADMIN', 'ADMIN123456789'"
        Cn.Execute " EXEC sp_addsrvrolemember 'MRPIIADMIN', 'sysadmin'"
    End If

    List1.AddItem "創建數據庫用戶完成。。。。。。。"
    List1.AddItem ""
    List1.AddItem "成功完成數據庫創建,請退出後運行系統!"
    Me.Refresh
   
    MsgBox "成功完成數據庫創建,請退出後運行系統!  ", vbInformation, "幫助信息"
   
    Kill App.Path & "/mrpii.bak"
   
Proc_exit:
    Set Ores = Nothing
    Set oSQLServer = Nothing
    Me.MousePointer = 0
    Exit Sub
ErrorHandler:
    Me.MousePointer = 0
    Select Case Err.Number
        Case -2147218403
            MsgBox "數據庫正在使用,請關閉所有正在使用數據的程序!", vbExclamation, "錯誤"
        Case Else
            MsgBox Err.Number & vbCrLf & Err.Description, vbExclamation, "提示"
    End Select
End Sub

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章