2011-01-07 5 views
0

Ich hoffe, mein Fragetitel ist klar genug. Was ich versuche, ist, gleichzeitig Update-Skripte auf allen Datenbanken auf dem gleichen Server mit SQL Server Management Objects auszuführen. Meine aktuelle Experiment Implementierung ist wie folgt:Skripte für Datenbanken auf demselben Server gleichzeitig mit SMO und Task Parallel Library ausführen?

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); }); 

Ich bin nicht einmal sicher, dass dies möglich ist, SMO verwenden, aber das ist im Grunde, was ich tun möchte. Ich kann sehen, dass das ConnectionContext.InfoMessage-Ereignis wahrscheinlich Probleme hat, aber ich bin mir nicht sicher, wie zu beheben ist. Soll ich stattdessen eine separate Server-Instanz für jede parallele Aufgabe erstellen?

Ich würde mich über jeden möglichen Rat freuen, den Sie geben können.

Danke, Daniel

Antwort

0

Die Lösung jeder Thread erstellen müssen, ist es eigenen Server/Serverconnection-Objekt, auf diese Weise gibt es keine Shared Memory zwischen den Fäden.

Verwandte Themen