Not the answer I was looking for but I wound up having someone help me write a C# procedure in Visual Studio that calls each of my SQL procedures and outputs each to an Excel file. It works and I can reuse it in the future.
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Text;
namespace StoredProcedureRunner
{
class Program
{
public static void Main(string[] args)
{
var storedProcs = new List<string>();
storedProcs.Add "dbo.Get_Result_Set1");
storedProcs.Add "dbo.Get_Result_Set2");
storedProcs.Add "dbo.Get_Result_Set3");
storedProcs.Add "dbo.Get_Result_Set4");
storedProcs.Add "dbo.Get_Result_Set5");
storedProcs.Add "dbo.Get_Result_Set6");
storedProcs.Add "dbo.Get_Result_Set7");
foreach (var storedProc in storedProcs)
{
var table = GetDataTable(storedProc);
WriteDataTableToCSV(storedProc + ".csv", table);
}
}
public static DataTable GetDataTable(string storedProc)
{
DataTable table = new DataTable();
using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConStrg"].ConnectionString))
{
using (var command = new SqlCommand(storedProc, connection))
{
using (var adapter = new SqlDataAdapter(command))
{
command.CommandType = CommandType.StoredProcedure;
command.CommandTimeout = 0
adapter.Fill(table);
}
}
}
return table;
}
public static void WriteDataTableToCSV(string filename, DataTable table)
{
StringBuilder sb = new StringBuilder();
var columnNames = table.Columns.Cast<DataColumn>().Select(col => col.ColumnName);
sb.AppendLine(string.Join(",", columnNames));
foreach(DataRow row in table.Rows)
{
var fields = row.ItemArray.Select(field => field.ToString());
sb.AppendLine(string.Join(",", fields));
}
File.WriteAllText(filename, sb.ToString());
}
}
}