2012-03-06 3 views
0

안녕하세요,SSIS 2008의 SMO 라이브러리 사용

개체가 있는지 확인한 다음 C#의 SMO 개체를 사용하여 간단한 스크립트를 작성하는 데 약간의 문제가 있습니다. 이 코드는 SSIS의 스크립트 작업 구성 요소 내에 있습니다. 코드는 성공적으로 실행되지만 새 데이터베이스는 로컬 인스턴스에 표시되지 않습니다. 어떤 도움이라도 대단히 감사하겠습니다.

using System; 
using System.Data; 
using Microsoft.SqlServer.Dts.Runtime; 
using System.Windows.Forms; 
using System.Collections; 
using System.Data.SqlClient; 
using Microsoft.SqlServer.Management.Common; 
using Microsoft.SqlServer.Management.Smo; 

     public void Main() 
     { 
      //String DBName = Dts.Variables["TmpViewDBName"].Value.ToString(); 
      //String Instance = Dts.Variables["TmpViewDBInstance"].Value.ToString(); 

      String DBName = "localhost"; 
      String Instance = "TmpViewDB"; 

      Server TmpViewServer = new Server(Instance); 

      //Windows Auth 
      TmpViewServer.ConnectionContext.LoginSecure = true; 
      TmpViewServer.ConnectionContext.Connect(); 

      if (TmpViewServer.Databases[DBName] != null) 
      { 
       TmpViewServer.Databases[DBName].Drop(); 
      } 

      Database TmpViewDB = new Database(TmpViewServer, DBName); 

      if (TmpViewServer.ConnectionContext.IsOpen) 

        TmpViewServer.ConnectionContext.Disconnect(); 

      Dts.TaskResult = (int)ScriptResults.Success; 
     } 

답변

4

실제로 개체를 만들려면 선을 추가해야한다고 생각합니다. 이제부터는 객체를 인스턴스화했지만 데이터베이스에 대한 호출을 수행하지 않고 원격 객체를 생성했습니다.

Database TmpViewDB = new Database(TmpViewServer, DBName); 
    TmpViewDB.Create(); 
+0

와우, 나는 정말로 어리 석다. :) 당신의 시간을 낭비하게해서 유감스럽게 생각한다. – user1253174

+1

아무도 비슷한 문제가 생길 경우 걱정할 필요가 없습니다. 지난 주에 SMO를 통해 에이전트 작업을 작성하는 것과 유사한 시나리오로 인해 필자는 그 느낌을 알고 있습니다. 이 답변이 도움이된다면 옆에있는 위쪽 화살표를 클릭하십시오. 문제가 해결되면 녹색 체크 표시의 실루엣을 클릭하십시오. 에 오신 것을 환영합니다. – billinkc