【发布时间】:2012-03-24 16:22:55
【问题描述】:
我正在使用 SMO 使用 .Net 代码从 Sql 服务器数据库中编写我的对象脚本。但到目前为止,我正在经历一个顺序循环。
foreach(var table in TableCollection)
{
var stringCollection=table.Script();
}
它工作正常。但是,当我将相同的循环转换为 Parallel.ForEach 循环时:
Parallel.ForEach(TableCollection,table=>
{
var stringCollection=table.Script();
});
它无法编写脚本。有没有人使用过相同的方法或任何其他方法从 Sql server 中并行编写对象?
更新:
到目前为止,我还无法计算出 Parallel LOOP,但我使用了下面提到的代码:
server.SetDefaultInitFields(true);
它在一定程度上提高了性能。
【问题讨论】:
-
它到底是怎么失败的?它会引发一些异常吗?
-
是的,它会抛出异常,表明已经有一个与此命令关联的 OPEN 数据读取器。可能当两个线程并行尝试编写 SERVER 对象的脚本时(因为正在使用相同的实例)会导致问题.
标签: c# .net sql task-parallel-library smo