2010-05-25 54 views
0

我在C#中使用SMO來運行SQL腳本。我需要將文件的結果輸出到文本文件中。當通過C#中的SMO發送時,是否可以將sql命令的結果輸出到文本文件?

當使用命令行運行查詢時,我可以使用「-o [輸出文件]」參數獲得所需的結果。有沒有辦法使用SMO對象執行相同的操作?

目前我的代碼只需發送一個SQL腳本到服務器:

// Read the sql file 
string script = sqlFile.OpenText().ReadToEnd(); 

// Create a new sql connection, and parse this into a server connection. 
SqlConnection sqlConnection = new SqlConnection(connectionString); 
Server server = new Server(new ServerConnection(sqlConnection)); 

// Run the sql command. 
server.ConnectionContext.ExecuteNonQuery(script); 

任何幫助,將不勝感激!

回答

0

發現我需要執行的SQL腳本基本上只輸出輸出文件遇到的錯誤。我能夠使用這個:

catch (Exception ex) 
     { 
      executedSuccessfully = false; 

      SqlException sqlex = ex.InnerException as SqlException; 

      if (sqlex != null) 
      { 
       exceptionText = sqlex.Message; 
      } 
     } 

感謝您的幫助,雖然何!我將來可能需要這個...

1

我不知道,如果你可以做同樣的事情,但假設腳本返回一些數據,你可以只執行腳本,讀取返回的數據,並將其存儲到一個文件中,例如:

using (StreamWriter sw = new StreamWriter("output.txt")) 
{ 
    using(SqlConnection conn = new SqlConnection(connectionString)) 
    { 
     conn.Open(); 
     using(SqlCommand cmd = conn.CreateCommand()) 
     { 
      cmd.CommandText = script; 
      using(SqlDataReader rdr = cmd.ExecuteReader()) 
      { 
       while(rdr.Read()) 
       { 
        sw.WriteLine(rdr.Item("colName").ToString(); 
       } 
      } 
     } 
    } 
} 
相關問題