2

I'm having some trouble finding a way to get the results from updates/inserts/deletes/table creates...

I would like to get it like you see in the SSMS (SQL Server Management Studio) message tab (guess the tool is done_in_proc).

At the moment, I can get the exceptions, and I can capture the prints done in the SQL script.

I already tried ExecuteScalar, ExecuteReader, ExecuteWithResults and got nothing.

Thanks,

Code:

public void conn_InfoMessage(object sender, SqlInfoMessageEventArgs e)
{
    foreach (SqlError err in e.Errors)
    {

        richTextBoxDeployCopy.AppendText("Info : "+err.Message + Environment.NewLine);
    }
}        

public void ExecSQLScript(string Instance, string Database, string SQLScript, string Username, string Password)
{

    if (Application2Deploy == "DUMMY")
    {
        server = "Server";
    }
    else
    {
        server = Instance;
    } string sqlConnectionString = @"User ID=" + Username + "; Password = " + Password + ";Persist Security Info=False;Initial Catalog=" + Database + ";Data Source=" + server + "\\" + Instance;

    FileInfo file = new FileInfo(SQLScript);

    string script = file.OpenText().ReadToEnd();

    conn = new SqlConnection(sqlConnectionString);

    conn.FireInfoMessageEventOnUserErrors = true;

    Server SQLserver = new Server(new ServerConnection(conn));

    if (checkBoxDeployCopyTestingScript.Checked)
    {
        richTextBoxDeployCopy.AppendText("Test: Running SQL Script......" + Environment.NewLine);
        LogFile(DateTime.Now + "Test: Running SQL Script......", LogPath);
    }
    else
    {
        try
        {
            SQLserver.ConnectionContext.Connect();
            SQLserver.ConnectionContext.InfoMessage += new SqlInfoMessageEventHandler(conn_InfoMessage);
            SQLserver.ConnectionContext.BeginTransaction();
            SQLserver.ConnectionContext.ExecuteNonQuery(script);

            Error = false;
        }
        catch (Exception SQLEx)
        {
            Error = true;
            richTextBoxDeployCopy.AppendText("Error executing SQL Script." + Environment.NewLine);
            LogFile(DateTime.Now + "Error executing SQL Script", LogPath);
            richTextBoxDeployCopy.AppendText("Exception: " + SQLEx.InnerException.Message + Environment.NewLine);
            LogFile(DateTime.Now + "Exception: " + SQLEx.InnerException.Message, LogPath); 
            try
            {
                SQLserver.ConnectionContext.RollBackTransaction();
            }
            catch (Exception ex2)
            {
                richTextBoxDeployCopy.AppendText("Error executing rollback." + Environment.NewLine);
                richTextBoxDeployCopy.AppendText("Exception: " + ex2.Message + Environment.NewLine);
            }
        }
        if (Error == false)
        {
            SQLserver.ConnectionContext.CommitTransaction();
            CopyExit("End");
            file.OpenText().Close();
            file.OpenText().Dispose();
            SQLserver.ConnectionContext.SqlConnectionObject.Close();
            //SQLserver.ConnectionContext.ForceDisconnected();
        }
        else
        {
            CopyExit("Abort");
            file.OpenText().Close();
            file.OpenText().Dispose();
            SQLserver.ConnectionContext.SqlConnectionObject.Close();
            //SQLserver.ConnectionContext.ForceDisconnected();
        }
    }
}
Thom A
  • 88,727
  • 11
  • 45
  • 75
spkon
  • 21
  • 3
  • The answer is here I believe: http://stackoverflow.com/questions/1880471/capture-stored-procedure-print-output-in-net – Rob Sedgwick Jun 12 '14 at 08:42

0 Answers0