Выполнение сценариев в базах данных на одном сервере одновременно с использованием SMO и Task Parallel Library? - PullRequest
0 голосов
/ 07 января 2011

Надеюсь, название моего вопроса достаточно ясное. Я пытаюсь одновременно выполнять сценарии обновления для всех баз данных на одном сервере с использованием объектов управления SQL Server. Моя текущая экспериментальная реализация выглядит так:

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, скорее всего, будет иметь проблемы, но я не знаю, как решить. Должен ли я вместо этого создать отдельный экземпляр Сервера для каждой параллельной задачи?

Буду признателен за любой совет, который вы можете дать.

Спасибо, Даниэль

1 Ответ

0 голосов
/ 13 января 2011

Решение состоит в том, чтобы каждый поток создал свой собственный объект Server / ServerConnection, чтобы между потоками не было общей памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...