Сброс роли приложения 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);
            }
        }

0 ответов

Другие вопросы по тегам