以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]列出每个数据库的所有用户  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=188757)

--  作者:2425004926
--  发布时间:2023/10/17 9:28:00
--  [求助]列出每个数据库的所有用户
狐表杂项中有一个窗口,SQLExcuter
选择数据源(是ip下面的一个数据库)
语句S elect name From Sysusers Where islogin = \'1\'
就列出了这个数据库的所有用户

如果要列出另一个数据库的用户,就需要更换数据源(及同一ip的另一个数据库)

我现在想把每个数据库的的用户单独列出来,
语句应该怎么写,老师指点一下

第一步:获取IP地址下所有数据库名S elect Name From Master..SysDatabases Order By Name
第二步:?

--  作者:有点蓝
--  发布时间:2023/10/17 9:39:00
--  
遍历这些数据库名称呗
……
Dim dt As DataTable = cmd.ExecuteReader()
for each dr as datarow in dt.datarows
cmd.CommandText = "Select name From “ & dr("name") & ” Where islogin = \'1\'"
……
next

--  作者:2425004926
--  发布时间:2023/10/17 9:50:00
--  
Dim dt As DataTable
Dim cmd As New SQLCommand
cmd.CommandText = "Sel ect Name From Master..SysDatabases Order By Name"
dt = cmd.ExecuteReader()
For Each dr As DataRow In dt.datarows
    Dim dt2 As DataTable
    Dim cmd2 As New SQLCommand
    cmd2.CommandText = "Sel ect name From " & dr("name") & " Where islogin = \'1\'"
    dt2 = cmd2.ExecuteReader()
    OutPut.Show(dt2.GetComboListString("name"))
Next

我这样试过,会出错,红色部分,如果把数据库名放在那里出错,显示对象名无效,用Sysusers却没有问题
[此贴子已经被作者于2023/10/17 9:52:22编辑过]

--  作者:有点蓝
--  发布时间:2023/10/17 10:03:00
--  
cmd2.CommandText = "Sel ect name From " & dr("name") & ".Sysusers Where islogin = \'1\'"
--  作者:2425004926
--  发布时间:2023/10/17 10:15:00
--  
还是出错,对象名 \'jjkabc.Sysusers\' 无效。
--  作者:有点蓝
--  发布时间:2023/10/17 10:19:00
--  
说明jjkabc这个数据库里没有Sysusers这个表。能够保证所有数据库都有同样的用户表吗?
--  作者:2425004926
--  发布时间:2023/10/17 10:21:00
--  
SQLExcuter窗口的逻辑,数据源对应数据库

同一语句 Sele ct name From Sysusers Where islogin = \'1\'"
不同数据库得出不同用户名

‘数据库名称’ 的参数肯定是带进去了,语句是否作了调整?

--  作者:有点蓝
--  发布时间:2023/10/17 10:24:00
--  
试试
cmd2.CommandText = "Sel ect name From " & dr("name") & ".dbo.Sysusers Where islogin = \'1\'"

--  作者:2425004926
--  发布时间:2023/10/17 10:37:00
--  
好了,OK,谢谢老师!
cmd2.CommandText = "Sele ct name From " & dr("Name") & ".dbo.Sysusers Where islogin = \'1\'"