我正在使用 .net 应用程序中的 sql 应用程序角色。我有一个连接丢失时发生的问题。举个例子,我有这个代码块,它打开一个连接,设置应用程序角色,从数据库中进行选择并处理我的连接。如果我第二次运行此代码,则在尝试再次设置应用角色时失败(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);
}
}