2010-05-25 12 views
0

J'utilise SMO en C# pour exécuter un script SQL. J'ai besoin de sortir les résultats du fichier dans un fichier texte.Est-il possible de sortir les résultats d'une commande sql vers un fichier texte, lorsqu'il est envoyé via SMO en C#?

Lorsque j'utilise une ligne de commande pour exécuter la requête, je peux obtenir le résultat souhaité en utilisant l'argument "-o [fichier de sortie]". Existe-t-il un moyen d'effectuer la même opération à l'aide d'un objet SMO?

Au moment où mon code envoie simplement un script SQL à un serveur:

// 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); 

Toute aide serait très apprécié!

Répondre

0

J'ai découvert que le script SQL que je devais exécuter ne générait essentiellement que les erreurs qu'il avait rencontrées dans le fichier de sortie. J'ai été en mesure d'attraper cela en utilisant:

catch (Exception ex) 
     { 
      executedSuccessfully = false; 

      SqlException sqlex = ex.InnerException as SqlException; 

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

Merci pour votre aide si Ho! J'en aurais peut-être besoin dans le futur ...

1

Je ne sais pas si vous pouvez faire exactement la même chose, mais en supposant que le script renvoie certaines données vous pouvez simplement exécuter le script, lisez les données renvoyées et le stocker dans un fichier, par exemple:

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(); 
       } 
      } 
     } 
    } 
}