【发布时间】:2019-04-18 10:59:07
【问题描述】:
我正在从事一个具有多个上下文的项目,因为数据是从不同的数据库中提取的。
我们大约有数百个数据库,1个数据库也有数百个表,所以要翻遍很多数据库才能找到一个表。
我只有通过这样的列名从特定数据库中查找表名的代码:
SELECT c.name AS 'ColumnName'
,t.name AS 'TableName'
FROM sys.columns c
JOIN sys.tables t ON c.object_id = t.object_id
WHERE c.name LIKE '%mycolumn%'
ORDER BY TableName
,ColumnName;
但有时我已经知道表名但不知道它属于哪个数据库。谁能指出正确的代码?
更新:
我的意思是说数据库。为了更清楚的解释,这里是我们的连接字符串,你可以看到我刚刚添加了几个数据库。
但是,它可以根据我们在代码中需要的数据而增长。我需要将用作我的上下文的数据库名称(我正在使用 dbscopecontext)以及能够像这样查询
select * from [MyDatabase].[dbo].[MyTable]
因为像下面这样从查询板中选择会出错。
select * from [dbo].[MyTable]
<add name="EContext" connectionString="server; Database=E; providerName="System.Data.SqlClient" />
<add name="MContext" connectionString="server; Database=M; providerName="System.Data.SqlClient" />
<add name="AContext" connectionString="server; Database=A; providerName="System.Data.SqlClient" />
<add name="BaContext" connectionString="server; Database=B; providerName="System.Data.SqlClient" />
<add name="WConntextntext" connectionString="server; Database=W; providerName="System.Data.SqlClient" />
<add name="WpContext" connectionString="server; Database=Wp; providerName="System.Data.SqlClient" />
<add name="Maontext" connectionString="server; Database=MA; providerName="System.Data.SqlClient" />
<add name="BlsContext" connectionString="server; Database=Bls; providerName="System.Data.SqlClient" />
<add name="BiContext" connectionString="server; Database=Bi; providerName="System.Data.SqlClient" />
</connectionStrings>
提前致谢
【问题讨论】:
-
“数据源”是什么意思?
-
数据源通常在应用程序级别设置。如果您想知道某物正在使用的数据源,为什么不查看应用程序并找出它正在使用的连接字符串呢?试图在任意数量的数据库中按名称查找可能位于任意数量的服务器上的对象是错误的方法。
-
与您运行引用的 sql 语句时使用的数据源相同?
-
对不起,我的意思是说数据库不是数据源。我更新了我的问题。谢谢
-
您发布的连接字符串列表 - 它是做什么用的?实体框架?要查找表,您不能在生成的类中进行全局搜索吗?
标签: sql-server information-schema sysobjects