1 / 8
文档名称:

BI数据权限解决方案.docx

格式:docx   大小:130KB   页数:8页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

BI数据权限解决方案.docx

上传人:淘气小宇 2022/9/30 文件大小:130 KB

下载得到文件列表

BI数据权限解决方案.docx

相关文档

文档介绍

文档介绍:该【BI数据权限解决方案 】是由【淘气小宇】上传分享,文档一共【8】页,该文档可以免费在线阅读,需要了解更多关于【BI数据权限解决方案 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。BI数据剖析是当前公司的热点应用,而对公司来说,权限控制是特别重要的,特别是作
为决议用的公司报表。当前鉴于微软SQLServer系统的BI架构为IntegrationServices+
AnalysisService+ReportingServices,IntegrationServices和Analysis都属于应用后台的服务,不会在用户前端显现,其权限控制系统不在我们这篇文章的议论范围内(可是实现数据级权限控制,需要AnalysisServices的参加)。而关于前端显现用的公司报表,权限控制系统分为2种:,主要用于控制谁能够看这个报表;数据级权限则比较复杂了,任何人看同一张报表,报表上的数据只好是他有
权限查察的数据。简单说,就是总经理看到的数据和经理看到的数据是不同样的,固然他们
,会发现假如实现了数据级权限的控制,那
么公司报表能否需要进行权限控制已经不再重要(自然,为了界面友善性,仍是应当控制下
的)。
这篇文章主要就是叙述鉴于SQLServer架构的BI数据级权限的解决方案,这也是我
给一个德国大型跨国公司客户实行其BI项目中,对方特别重视的一个功能。这里先简单介绍
下这个客户和项目,出于保密要求,我把该客户叫做CustomerS(简称CS,呵呵,不是那个游戏哦)。
CS项当前端采纳Sharepoint,后台采纳SQLServer,主要剖析客户S的销售数据。CS的组织构造分为部门、地区;部门和地区是互相交错的;某个部门的总部人员能够看到全
国全部地区的数据;,需要
在网页上能够进行配置。这就是客户对数据级权限的要求。
针对这些需求,数据级权限解决方案采纳以下架构:
报表查察流程说明:
用户查察报表
报表从Cube中获取数据
Cube从数据库中(记录取户的数据权限配置)获取接见用户的权限配置,依据配置返回相应的数据
报表显示结果数据
数据权限配置流程说明:
用户接见数据权限配置页面(因为鉴于Sharepoint,所以是内嵌数据权限Webpart的Sharepoint页面)
页面获取Cube构造(因为Cube的构造内容很宏大,为了防止网页响应慢,一般经过ajax树状来显现其构造)
用户改正数据权限设置,而且保留到数据库中
说明:这里面进行数据权限控制的对象为域帐号(能够为域用户或许组)。
纵览数据权限实现的这个流程,我们提取出中间几个重要的实现详细解说解决方案,他们是:
Cube中怎样进行权限控制
设置数据权限时,怎样读取Cube构造
Cube中怎样进行权限控制
SQLServerAnalysisServices自己供给了一种设置Cube数据数据权限的体制。打
开AnalysisServices,我们能够看到“程序集"和“角色"2个条目,他们就是和数据权限设置密切有关的内容了。以下列图所示:
程序集:这是一个DLL类库,经过VisualStudio中新建一个ClassLibrary(类库)来
.
角色:
哪个程序集来获取用户能够接见的数据.

,更重要的是设置

Cube

调用
我们先来看



程序集。这个程序集的代码其实很简单,不会超出

30行。
其主要流程以下

:
1。

读取接见用户的数据权限设置

2。

依据数据权限设置,返回一个能够
接见的

Dimension

数据集

MDX

字符串
我们看看以下的主要代码

(这个类库也就只要要这样一个

CS

文件):
namespaceBI
{
publicclassDataSecurity
{
publicstaticstringGetDimensionSet(stringdomain_accountstringdimension)

,
方法的名字无所谓,参数比较重要
domain_account:接见用户的帐号,后边我们会知道是从角
色的设置中传入
dimension:是获取哪个维度的数据。在角色里,需要对每一
个维度进行设置
{
//return"{[Location]。[City].&[Seattle]}”,返回的结果示例
SqlConnectionconnection=newSqlConnection(connection_s
tring);
connection。Open( );
SqlCommandcommand=newSqlCommand("SP_Security_GetDime
nsionSetByLoginAccount",connection);
=System。Data。CommandType。StoredPr
ocedure;
SqlParameterp1=newSqlParameter("***@domain_account",d
omain_account);
SqlParameterp2=newSqlParameter("***@dimension",dimens
ion);
。Add(p1);
。Add(p2);
SqlDataReaderreader=();
stringresult_set=;
intcount=0;
while(())
{
count++;
if(result_set!=string。Empty)result_set+=",";
result_set+=(string)reader["DimensionSet"];
}
();
();
( );
return”{”+result_set+"}”;
}
publicDataSecurity()
{
}
}
}
这个类库的作用很简单,抛开BI不谈,其实他就调用了一个储存过程,把返回结果做
了一个字符串拼接,而后返回这个字符串。一般的返回结果会是大概以下:{[Location].[City]。&[Seattle]},这表示用户在Location维度下只好够看到Seattle的数据,其余的城
市数据都看不到。自然假如是多个城市,那就是用逗号分开的列表,比方:{[Location]。[City].&[Seattle],[Location].[City]。&[Washington]}。
如上所示,字符串拼接很简单,可是这些用户能够接见的详细数据记录在哪呢?这就是用户在网页上设置好数据权限,记录在数据库中的字符串了。
在这里你要更清楚地话

,就需要进一步认识

MDX,这不在这篇文章的议论范围以内。
我们第一达成了第一步,结下来就是在角色设置里调用这个DataSecurity。dll类库了。
这个比较简单,可是繁琐,关于Cube中的每一个维度都需要手动设置。这个步骤依据以下的表示图走就是了,没有什么代码工作。
翻开SecruityRole角色的属性,进入“维度数据”中就能够设置数据权限了。每一个需要控制数据权限的维度和属性都需要设置下,基本上设置为一条语句:
StrtoSet(。GetDimensionSet(USERNAME,"City"))
对这个语句解说下:StrtoSet是将字符串变换为MDX里的数据集。USERNAME是访
问者的域帐号,City则为我们自定义的参数,表示要获取City属性维度的受权数据。
到了这里,我们已经达成了很重要的一步,数据权限的主体已经实现了。可是关于用户
来说,他需要有一个前端界面来设置这些数据权限。下边的内容就是为认识决这个问题,不
过这里,我只挑出最重要的部分,读取Cube构造来讲,其余的部分你完整能够自己设计。
在CS这个项目中,我们是做了以下工作:
全部的设置界面都是SharepointWebpart(请拜见有关内容)
Webpart中的ajax(这个要独自取出来说,是因为这个部分比较麻烦),需要用到ajax
的原由就是Cube的构造是很大的,假如一次性读出来,必定是等到花儿也谢了,相信没有
人会用他.
后台能够控制哪些维度需要设置数据权限(有些维度不需要设置数据权限,那么就不让
他在ajax树中显现出来了)
有自定义的角色,这个角色不同于方才讲的Cube中的角色。这是用户自己定义的数据
权限角色,方才的角色只要要那一个就足够了.
有了角色自然有搜寻、设置用户、设置角色的数据权限、编写、删除
这个都能够依据你的需要进行设计,不必定要完整同样,就比方我用了ajax树来显现
Cube构造,可是你能够采纳其余方式。
下边我们就进入下一个重要话题,就是读取Cube的构造(其实在读取这个构造自己,
前面的数据权限就已经开始起作用了,没有权限接见的数据不会出此刻ajax树中).
设置数据权限时,怎样读取Cube构造
读取Cube的构造,微软已经供给了一套特别丰富的类库给我们。这里就简单介绍下,
假如你在详细实现过程中碰到了问题,相信上Google是一个最好的方法。
下边我们介绍读取Cube构造的详细内容,第一就是连上你的Cube。这主要经过以下语句达成。
AdomdConnectionadomdConnection=newAdomdConnection();=“DataSource=localhost;Catalog=MyCube;”;
adomdConnection。Open();
//这里读取详细的Cube构造
();
();
在连上Cube以后,经过adomdConnection能够读取整个Cube了。主要波及到以下内容:
Cube:CubeDefcube=adomdConnection。Cubes[“MyCubeName"];
Dimension

:cube。Dimensions

,这里面是全部的

Dimension.
Hierarchy

:

,全部的层次
Member

:

[0].GetMembers

(),全部成员
经过以上几个内容就能够把整个

Cube

的构造完整显现出来,

有了他们,就看你怎么展
示你的

Cube

数据了。自然了,第一我们不可以忘了增添一个引用:
Microsoft

。AnalysisServices

。AdomdClient
结束语
到这里为止,我介绍了BI数据权限解决方案中波及到的最重要的内容,你能够实现自己的BI数据权限解决方案,而且把它应用到你的项目中去上亮点。

鉴于这些内容,
,进而给你的项目添
自然了,实现整个解决方案仍是需要花销好多时间的
简单易用的结果。这些友善的界面工作都需要留给你来做。

,毕竟对用户来说,他们需要一个

最近更新