跨数据库查询,循环数据库

时间:2012-07-13 15:43:38

标签: linqpad

由于我有很多数据库,我想循环执行每个数据库的linq查询/更新。

是否可以执行类似

的操作
foreach(var r in master.sysdatabases)
{
from b from r.chicken
select b.age;
}

我有支持跨数据库支持的高级版。

2 个答案:

答案 0 :(得分:5)

如果你的所有数据库都有相同的"鸡肉"表,你可以这样做:

var builder = new SqlConnectionStringBuilder (Connection.ConnectionString);

foreach (var db in sys.Databases)
{
   builder.InitialCatalog = db.Name;
   var dc = new TypedDataContext (builder.ToString());
   try
   {
      var query =
         from b in dc.Chickens
         select b.Age;

      query.Dump();
   }
   catch { ... }
}

答案 1 :(得分:0)

我能够像这样解决它,但老实说我不喜欢使用字符串连接查询。

var r = (from b in Sysdatabases select b.Name).ToList();
foreach(var i in r)
{
try{
    var o = ExecuteQuery<string>("select urls from "+i+".dbo.website_setting");
    Console.WriteLine(o);
}
catch(Exception){}
}

try,如果表不存在则执行(master数据库等......)