关闭连接后重置SQL应用程序角色

时间:2016-10-21 11:16:41

标签: sql-server sql-server-2008-r2 application-role

我在.net应用程序中使用sql应用程序角色。我有一个问题,当连接丢失时发生。所以作为一个例子,我有这个代码块,它打开一个连接,设置app角色,从数据库中选择并处理我的连接。如果我第二次运行此代码,则在尝试再次设置app角色时失败(sys.sp_setapprole的ExecuteNonQuery()行。)

异常是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 个答案:

没有答案