如何自動發布MS SQL SERVER數據庫?
2024-08-31 00:48:54
供稿:網友
 
 
'程序編寫: 陳林茂
‘編寫日期:2003-01-01
當您的mis系統開發好以后,您如何盡快的分發您的數據庫呢?
下面我將提供vb代碼的具體實現:
option explicit
'define the sql connect
dim osqlserver as sqldmo.sqlserver
dim ocurrentdb as sqldmo.database
dim ocurrenttable as sqldmo.table
dim otestidx as sqldmo.index
'sqldmo is connected yes or no
public sname as string
private isconnected as boolean
'connect to local database server
public function connectdmo() as boolean
   on error goto handleerror
   'if we're connected, then disconnect and clear lists.
   if isconnected = true then
        osqlserver.disconnect
        isconnected = false
   end if
   'begin connect to sqlserver or msde
   'attempt a connection, then fill the properties stuff.
    osqlserver.applicationname = "sql-dmo index test"
    osqlserver.loginsecure = true
    
    'connect
    osqlserver.connect "(local)", "sa", ""
    
    isconnected = true
    connectdmo = true
   
handleerror:
    'connect failth
    if isconnected = false then
      isconnected = false
      connectdmo = false
    end if
    
end function
'add a exists database to server
public function adddatabase(byval dbname as string, byval dbpath as string, byval rstr as string) as boolean
   dim rstring
   'rstring = osqlserver.attachdbwithsinglefile(dbname, dbpath)
   rstring = osqlserver.attachdb(dbname, dbpath)
   adddatabase = true
   
   
   rstr = rstring
end function
'delete the exists database
public function deldatabase(byval dbname as string) as boolean
  dim rstring
  rstring = osqlserver.detachdb(dbname)
  deldatabase = true
end function
private sub usercontrol_initialize()
  on error goto merror
    set osqlserver = new sqldmo.sqlserver
    osqlserver.logintimeout = 15
    osqlserver.odbcprefix = false
    name = "msdeconn1"
merror:
end sub
public function isdbexists(byval dbname as string) as boolean
  dim odb as sqldmo.database
  dim rc as boolean
  'reconnect to database
  osqlserver.disconnect
  osqlserver.reconnect
  
  rc = false
  for each odb in osqlserver.databases
    if odb.systemobject = false then
        if trim(ucase(odb.name)) = trim(ucase(dbname)) then
          rc = true
        end if
    end if
  next odb
  
  'set the return value
  isdbexists = rc
  
end function
private sub usercontrol_terminate()
  'end connect the database
  osqlserver.close
end sub
public function startserver()
  osqlserver.start true
end function
public sub stopserver()
  osqlserver.stop
end sub
 
public property get name() as variant
  name = sname
end property
public property let name(byval vnewvalue as variant)
  sname = vnewvalue
end property