BI数据级权限解决方案
2008-08-28 09:57:12 来源:WEB开发网我们先来看DataSecurity.dll程序集。这个程序集的代码其实很简单,不会超过30行。其主要流程如下:
1. 读取访问用户的数据权限设置 2. 根据数据权限设置,返回一个能够访问的Dimension数据集MDX字符串
我们看看如下的主要代码(这个类库也就只需要这样一个CS文件):
namespace BI
{
public class DataSecurity
{
public static string GetDimensionSet(string domain_account, string dimension)
// 方法的名字无所谓,参数比较重要
// domain_account:访问用户的帐号,后面我们会知道是从角色的设置中传入
// dimension:是获取哪个维度的数据。在角色里,需要对每一个维度进行设置
{
//return "{[Location].[City].&[Seattle]}", 返回的结果示例
SqlConnection connection = new SqlConnection(connection_string);
connection.Open();
SqlCommand command = new SqlCommand("SP_Security_GetDimensionSetByLoginAccount", connection);
command.CommandType = System.Data.CommandType.StoredProcedure;
SqlParameter p1 = new SqlParameter("@domain_account", domain_account);
SqlParameter p2 = new SqlParameter("@dimension", dimension);
command.Parameters.Add(p1);
command.Parameters.Add(p2);
SqlDataReader reader = command.ExecuteReader();
string result_set = string.Empty;
int count = 0;
while (reader.Read())
{
count++;
if (result_set != string.Empty) result_set += ",";
result_set += (string)reader["DimensionSet"];
}
command.Dispose();
connection.Close();
connection.Dispose();
return "{" + result_set + "}";
}
public DataSecurity()
{
}
}
}
更多精彩
赞助商链接