以文本方式查看主题 - 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 -- 试试
|
|
-- 作者:2425004926 -- 发布时间:2023/10/17 10:37:00 -- 好了,OK,谢谢老师! cmd2.CommandText = "Sele ct name From " & dr("Name") & ".dbo.Sysusers Where islogin = \'1\'"
|