2012-03-06 29 views
0

下午好,在SSIS中使用SMO庫2008

林有一些麻煩,編寫使用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 2012-03-06 21:12:17

+1

不用擔心,如果有其他人遇到類似問題,請將問題留在那裏。上週通過SMO創建代理作業的情況也類似,所以我知道這種感覺。如果您發現此答案有幫助,請點擊旁邊的向上箭頭。如果它解決了您的問題,請點擊綠色複選標記的輪廓。歡迎來到SO。 – billinkc 2012-03-06 21:28:32