Сброс роли приложения SQL после закрытия соединения
Я использую роли приложения sql из приложения.net. У меня проблема, которая возникает при потере связи. Так что в качестве примера у меня есть этот блок кода, который открывает соединение, устанавливает роль приложения, делает выбор из базы данных и удаляет мое соединение. Если я запускаю этот код во 2-й раз, он терпит неудачу при попытке установить роль приложения снова (строка ExecuteNonQuery() для sys.sp_setapprole).
Исключением является SqlException: серьезная ошибка произошла в текущей команде. Результаты, если таковые имеются, должны быть отброшены.
Я попытался использовать параметр @fCreateCookie и вызвать sys.sp_unsetapprole для сброса роли, но это не имеет значения.
Помогите, пожалуйста?
using (SqlConnection connection = new SqlConnection(myConnectionString))
{
connection.Open();
using (SqlCommand command = new SqlCommand("sys.sp_setapprole", connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@rolename", "MyRole");
command.Parameters.AddWithValue("@password", "MyPassword");
command.ExecuteNonQuery();
}
try
{
DataSet ds = new DataSet();
using (SqlCommand command = new SqlCommand("dbo.MyProcedure", connection))
using (SqlDataAdapter adapter = new SqlDataAdapter(command))
{
command.CommandType = CommandType.StoredProcedure;
adapter.Fill(ds);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}