说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

如何查找并列出一个LAN中所有的SQL服务器以及其上的数据库的名字?

编辑:说三道四文库 发布时间:2018-02-20 07:59
HTML文档下载 WORD文档下载 PDF文档下载
rt
D:\>isql -L

Locally configured servers:
    -- NONE --

Announced network servers:
    BRUCE
    DAVEN
    DAVID
    EDIT2
    FRANK
    HELEN
    HENGLI
    JET
    JOBIN
    LYNX
    MARK
    TOM
    TONY
    WUWEI

D:\>
命令行用 osql -L    isql -L
数据库名字能得到吗?
EXEC MASTER..XP_CMDSHELL 'OSQL -L'
楼上写的什么意思?

看不懂

能不能解释一下?
--用查询分析器连接远程服务器,执行下面的语句,可以列出服务器上所有用户数据库+表+存储过程+触发器:

declare @sql varchar(8000)
declare @dbname varchar(250)

declare #aa cursor for
select name from master..sysdatabases where name not in('master','tempdb','model','msdb')
open #aa
fetch next from #aa into @dbname
while @@fetch_status=0
begin
set @sql='select re=''数据库名='+@dbname+''''
+' union all select ''--表名:'''
+' union all select name from ['+@dbname+']..sysobjects where xtype=''U'''
+' union all select ''--存储过程:'''
+' union all select name from ['+@dbname+']..sysobjects where xtype=''P'''
+' union all select ''--触发器:'''
+' union all select name from ['+@dbname+']..sysobjects where xtype=''T'''
print @sql
exec(@sql)
fetch next from #aa into @dbname
end
close #aa
deallocate #aa

如何在 VB 中执行这些语句呢?

因为想在 VB 中实现这些功能
VB中可以通过调用SQL-DMO来实现.
能讲具体些吗? 谢谢!
可以,不过现在没空.

如果明天不没人答你的话,我可以给你VB的例子.
十分感谢!

希望有人能尽快给我例子

'*************************************************************************
'**函 数 名:s_ListSQLSrv_DB
'**功能描述:在立即窗口打印出所有的 SQL Server 组及各组的 SQL Server
'**          及各级的数据库
'**输    入:无
'**输    出:无
'**调用模块:引用: Microsoft SQLDMO Object Library
'**作    者:邹建
'**日    期:2003年11月26日
'*************************************************************************
Sub s_ListSQLSrv_DB()
    Dim iSql As SQLDMO.Application
    Dim iSqlS As SQLDMO.SQLServer
    
    Dim iI&, iJ&, iL&
    
    Set iSql = New SQLDMO.Application
    Set iSqlS = New SQLDMO.SQLServer
    iSqlS.LoginSecure = True    '对于win98/me,取消此句
    
    With iSql.ServerGroups
        For iI = 1 To .Count
            Debug.Print .Item(iI).Name
            With .Item(iI).RegisteredServers
                For iJ = 1 To .Count
                    Debug.Print vbTab & .Item(iJ).Name
                    iSqlS.Connect .Item(iJ).Name    '对于win98/me,加上:,用户名,密码
                    With iSqlS.Databases
                        For iL = 1 To .Count
                            Debug.Print vbTab & vbTab & .Item(iL).Name
                        Next
                    End With
                    iSqlS.Disconnect
                Next
            End With
        Next
    End With
    
    Set iSql = Nothing
End Sub

备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘