我需要处理这个设计不佳的数据库,其中通过向服务器添加新数据库来建立新的数据组。所以我必须从多dbs中获取数据,我想知道有没有办法通过一个连接获取所有组数据?我正在使用c#。
答案 0 :(得分:1)
(除此之外:是否有可能影响设计?这听起来部分就像数据库架构名称的设计......)
有时可能(例如在SQL Server中使用database.schema.object
表示法,甚至server.database.schema.object
),但我不推荐它,因为相同的方法不适合所有用例,它打破了许多最佳实践指南。我强烈建议您只为每个数据库生成连接字符串,可能使用DbConnectionStringBuilder
或更具体的变体,如SqlConnectionStringBuilder
。
如果你担心有太多的开放(池化)连接,你可以在动态连接上禁用池化(但是你需要自己处理连接管理;我个人很想让池子启用,直到我能证明有一个问题)。
答案 1 :(得分:0)
如果所有数据库都在同一台服务器上,您可以使用与主数据库连接的连接中的全名来查询它们。您可能需要使用此设计动态构建所有代码,因为您事先并不知道需要连接到哪个数据库。
select * from database1.dbo.mytable m
join database2.dbo.mytable m2 on m.id = m2.id