Когда я называю SSISDB catalog.set_execution_parameter_value хранимой процедуру для задания параметров для выполнения моего проекта, он взрывает на булевом параметр сВызова catalog.set_execution_parameter_value из C# с логическим параметром
типа данных от входного значения не совместим с типом данных из «Boolean»
Я попытался использовать строку и объект с «ложной» или значение «1». Есть ли способ передать boolean для этого proc из C#?
РЕШЕНИЕ:
SqlCommand cmd = new SqlCommand("catalog.set_execution_parameter_value", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@execution_id", this.ExecutionID);
cmd.Parameters.AddWithValue("@object_type", ParamReference);
cmd.Parameters.AddWithValue("@parameter_name", ParamName);
SqlParameter p = cmd.Parameters.Add("@parameter_value", SqlDbType.Variant);
switch (ParamType)
{
case "String" :
p.Value = ParamValue;
break;
case "Int32" :
p.Value = Int32.Parse(ParamValue);
break;
case "Int64" :
p.Value = Int64.Parse(ParamValue);
break;
case "Boolean" :
p.Value = bool.Parse(ParamValue);
break;
}
cmd.ExecuteNonQuery();
Какой тип ParamValue? Я ожидал бы, что 0 или 1 будут работать с SQL, потому что это будет выглядеть t-sql. Может быть, изменить это на int? –
Сохраненный proc ожидает sql_variant. В C# я попытался установить ParamValue на строку и объект. Он не может быть int, поскольку некоторые параметры являются строками. – Metaphor