我有一个主数据库,其中有一个名为公司的表,其中包含一个名为 db_name 的列,其中包含该公司的数据库名称。
这些公司有多个具有相同结构的数据库。
在每个相同的数据库中都有一个名为action_log的表,其结构如下:
log_id | user_id | action_id
我想以某种方式运行查询以一起获取这些数据库中所有用户的活动。有没有办法与下面的例子类似?
select c.company_id, c.company_name, a.log_id, a.user_id, a.action_id
from master_db.dbo.companies c
inner join [c.db_name].dbo.action_log a
答案 0 :(得分:1)
编码以下算法。
1 - 创建一个游标以从master_db.dbo.companies中获取公司数据库名称。
2 - 对于每个数据库名称
A - 为'USE [DB]'创建动态sql,其中DB是公司数据库名称。
B - 添加分号以运行多个语句。附上上面的查询。
C - 执行查询。将结果插入表格中。
3 - 返回结果表。
您尝试使用 [c.db_name] .dbo.action_log ,语法将无效,因为在编译时,它无法解析括号[]中的项目。 / p>
您可以使用我的VLF程序作为起点。
http://craftydba.com/wp-content/uploads/2012/12/usp-monitor-vlfs.sql_.txt
Ĵ