Foxtable(狐表)用户栏目专家坐堂 → [求助]列出每个数据库的所有用户


  共有2697人关注过本帖树形打印复制链接

主题:[求助]列出每个数据库的所有用户

帅哥哟,离线,有人找我吗?
2425004926
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:712 积分:5559 威望:0 精华:0 注册:2019/11/14 9:36:00
[求助]列出每个数据库的所有用户  发帖心情 Post By: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
第二步:?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110544 积分:562604 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:712 积分:5559 威望:0 精华:0 注册:2019/11/14 9:36:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110544 积分:562604 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/10/17 10:03:00 [只看该作者]

cmd2.CommandText = "Sel ect name From " & dr("name") & ".Sysusers Where islogin = '1'"

 回到顶部
帅哥哟,离线,有人找我吗?
2425004926
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:712 积分:5559 威望:0 精华:0 注册:2019/11/14 9:36:00
  发帖心情 Post By:2023/10/17 10:15:00 [只看该作者]

还是出错,对象名 'jjkabc.Sysusers' 无效。

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110544 积分:562604 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/10/17 10:19:00 [只看该作者]

说明jjkabc这个数据库里没有Sysusers这个表。能够保证所有数据库都有同样的用户表吗?

 回到顶部
帅哥哟,离线,有人找我吗?
2425004926
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:712 积分:5559 威望:0 精华:0 注册:2019/11/14 9:36:00
  发帖心情 Post By:2023/10/17 10:21:00 [只看该作者]

SQLExcuter窗口的逻辑,数据源对应数据库

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

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

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110544 积分:562604 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/10/17 10:24:00 [只看该作者]

试试
cmd2.CommandText = "Sel ect name From " & dr("name") & ".dbo.Sysusers Where islogin = '1'"

 回到顶部
帅哥哟,离线,有人找我吗?
2425004926
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:712 积分:5559 威望:0 精华:0 注册:2019/11/14 9:36:00
  发帖心情 Post By:2023/10/17 10:37:00 [只看该作者]

好了,OK,谢谢老师!
cmd2.CommandText = "Sele ct name From " & dr("Name") & ".dbo.Sysusers Where islogin = '1'"

 回到顶部