Si desidera il metodo SqlCommandBuilder.DeriveParameters(SqlCommand). Si noti che richiede un ulteriore viaggio di andata e ritorno al database, quindi è un colpo di prestazioni alquanto significativo. Dovresti considerare di memorizzare nella cache i risultati.
Un esempio di chiamata:
using (SqlConnection conn = new SqlConnection(CONNSTRING))
using (SqlCommand cmd = new SqlCommand("StoredProc", conn)) {
cmd.CommandType = CommandType.StoredProcedure;
SqlCommandBuilder.DeriveParameters(cmd);
cmd.Parameters["param1"].Value = "12345";
// ....
}