2011-01-07 72 views
0

我希望我的问题标题足够清晰。我正在尝试的是使用SQL Server管理对象在同一服务器上的所有数据库上同时执行更新脚本。我目前的实验实现是这样的:使用SMO和任务并行库同时在同一服务器上的数据库上执行脚本?

var server = new Server(new ServerConnection(new SqlConnection(connString))); 
server.ConnectionContext.InfoMessage += new SqlInfoMessageEventHandler(DBOutputReceived); 

var databases = server.Databases.Cast<Database>().ToList();   
Parallel.ForEach(databases, db => { db.ExecuteNonQuery(script); }); 

我什至不知道这是可能的使用SMO,但是这基本上是我想做的事情。我可以看到ConnectionContext.InfoMessage事件可能会有问题,但我不知道如何解决。我应该为每个并行任务创建一个单独的服务器实例吗?

我会很感激你可以给任何意见。

谢谢,丹尼尔

回答

0

的解决方案是让每个线程创建它自己的服务器/ ServerConnection对象,这种方式存在线程之间没有共享内存。

相关问题