WEB开发网
开发学院数据库MSSQL Server BI数据级权限解决方案 阅读

BI数据级权限解决方案

 2008-08-28 09:57:12 来源:WEB开发网   
核心提示: 我们先来看DataSecurity.dll程序集,这个程序集的代码其实很简单,BI数据级权限解决方案(3),不会超过30行,其主要流程如下:1.读取访问用户的数据权限设置 2.根据数据权限设置,返回一个能够访问的Dimension数据集MDX字符串 我们看看如下的主要代码(这个类库也就只需

我们先来看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()
    {
    }
  }
}

上一页  1 2 3 4 5  下一页

Tags:BI 数据 权限

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接