2011-01-07 2 views
0

내 질문 제목이 충분히 명확 해지기를 바랍니다. SQL Server Management Objects를 사용하여 동일한 서버의 모든 데이터베이스에서 동시에 업데이트 스크립트를 실행하려고합니다. 현재 실험 구현은 다음과 같습니다.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 이벤트에 문제가있을 수 있지만 해결 방법을 모르겠습니다. 대신 각 병렬 작업에 대해 별도의 Server 인스턴스를 만들어야합니까?

당신이 줄 수있는 조언을 해주시면 감사하겠습니다.

감사합니다, 다니엘

답변

0

이 솔루션은 각 스레드가 자신의 서버/ServerConnection 객체를 생성하는 것입니다, 그 방법은 스레드 사이에 공유 메모리가 없다.

관련 문제