问题描述
我正在编写(在 .NET 中)一个登录屏幕,允许登录连接到 SQL Server。一旦他们输入了服务器名称和他们的凭据,它就会显示一个数据库列表供他们连接,但是,数据库需要具有正确的结构。这将在每个数据库中通过 ref.Config
表的存在以及该表中具有适当值的行来标识。服务器上可能有一大堆其他数据库用于其他目的。我在设计时不知道。
理想情况下,我想做的是这样的:
SELECT m.name
FROM MASTER.sys.databases m
CROSS APPLY (SELECT *
FROM {m.name}.INFORMATION_SCHEMA.TABLES t
WHERE t.TABLE_SCHEMA = 'ref'
AND t.TABLE_NAME 'Config') dbs
CROSS APPLY (SELECT *
FROM {m.name}.ref.Config c
WHERE c.KeyName = 'DatabaseMagicNumber'
AND c.KeyValue = '12345678') config
WHERE HAS_DBACCESS(m.name) = 1
ORDER BY m.name
其中 m.name
在评估后被替换到子查询中(我知道以上不是有效的 SQL)。有没有办法做到这一点,或者我必须对每个数据库运行查询?此时我无法在服务器上拥有存储过程。理想情况下,我只需要一个 SQL 语句,该语句将返回符合我期望的结构的所有数据库的名称。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)