Desea el método SqlCommandBuilder.DeriveParameters(SqlCommand). Tenga en cuenta que requiere un viaje de ida y vuelta adicional a la base de datos, por lo que es un impacto de rendimiento algo significativo. Debería considerar almacenar en caché los resultados.
Un ejemplo de llamada:
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";
// ....
}