用VB如何判断SQL Server中哪些数据库是系统的,哪些是用户数据库?

解决方案 »

  1.   

    晕,这个问题太强了SQLSERVER安装以后会产生4个系统数据库和2个样板数据库4个系统数据库是matser,model,msdb,tempdb
    2个样子板数据库则是northwinds,pubs
    除掉这6个数据库以外全部是用户数据库.明白没....
      

  2.   

    再多告诉你一点,一个数据库中间判断那些是系统表和那些是用户表则是在sysobjects里面查询找当前数据库的系统表,执行:select * from sysobjects where xtype='s'找当前数据库的用户表,执行select * from sysobjects where xtype='u'
      

  3.   

    daisy8675(莫依 MS MVP-VB):
        我的意思是:能不能通过一条Select语句在where中给出个标志条件(类似你第二个例子),就列出用户数据库.
        以前,我见过通过sqldmo实现,好象在VB中是通过一个对象的属性(布尔类型)来判断.
      

  4.   

    你说的是这2段代码吧'引用Microsoft SQLDMO Object Library后,函数SQLServerList搜索所有SQL Server服务器,SQLDatabaseList搜索指定SQL Server服务器上的所有数据库 
    Public Function SQLServerList(ByRef strServerName() As String, _
    Optional ByRef rlngErrNum As Long, _
    Optional ByRef rstrErrDescr As String) As BooleanDim objServerApp As SQLDMO.Application
    Dim objServers As SQLDMO.NameList
    Dim lngServerCount As Long
    Dim I As Long
    On Error GoTo SQLServerListErrSQLServerList = False
    Set objServerApp = New SQLDMO.Application
    Set objServers = objServerApp.ListAvailableSQLServerslngServerCount = objServers.Count
    ReDim strServerName(lngServerCount - 1)For I = 1 To lngServerCountstrServerName(I - 1) = objServers.Item(I)Next ISQLServerList = TrueErr.Clear
    SQLServerListErr:
    Set objServers = Nothing
    Set objServerApp = NothingrlngErrNum = Err.Number
    rstrErrDescr = Err.Description
    End Function 
    Public Function SQLDatabaseList(ByVal vstrServer As String, _
    strDatabase() As String, _
    Optional ByVal vstrUser As String = "sa", _
    Optional ByVal vstrPassWord As String = "", _
    Optional rlngErrNum As Long, Optional rstrErrDescr As String) As BooleanDim objServer As SQLDMO.SQLServer
    Dim lngDatabaseCount As Long
    Dim I As Long
    On Error GoTo SQLDatabaseListErrSQLDatabaseList = False
    Set objServer = New SQLDMO.SQLServerobjServer.Connect vstrServer, vstrUser, vstrPassWord 
    lngDatabaseCount = objServer.Databases.Count
    ReDim strDatabase(lngDatabaseCount - 1)For I = 1 To lngDatabaseCount
    strDatabase(I - 1) = objServer.Databases.Item(I, "dbo").Name
    Next ISQLDatabaseList = TrueErr.Clear
    SQLDatabaseListErr:
    Set objServer = NothingrlngErrNum = Err.Number
    rstrErrDescr = Err.Description 
    End Function