用友U9数据库–用户对应的权限明细查询

—–用户对应的权限菜单—————————————————————————————-
select distinct a.name 组织,y.Name 用户,U.Name 用户组,b.Name 角色名称,d.Name,menuBETrl.DisplayName 菜单名称,
case authorityBE.Opinion when 0 then ‘拒绝’ when 2 then ‘允许’ end as 权限值 from Base_UserOrgRole x
inner join base_role_trl b on x.role=b.id and b.SysMLFlag=’zh-CN’ and b.name<>’导出报表权限’ and b.Name<>’OBA’
inner join base_role roleBE on x.role=roleBE.id
inner join Base_RoleApplication z on x.role=z.role
inner join Base_Application_Trl d on z.application=d.id and d.SysMLFlag=’zh-CN’
inner join base_userorg e on x.userorg=e.id
inner join base_organization_trl a on e.org=a.id
inner join Base_User y on e.[User]=y.id
inner join Base_UserGroup_Trl U on y.UserGroup=U.ID –显示用户组
inner join vw_UBF_Security_Right_Task authorityBE on authorityBE.RoleId = roleBE.ID
inner join UBF_Assemble_Menu menuBE on authorityBE.AuthorityItemId =menuBE.ID
inner join UBF_Assemble_Menu_Trl menuBETrl on menuBETrl.ID = menuBE.ID and menuBETrl.SysMLFlag=’zh-CN’
inner join Base_Application appBE on menuBE.[Application] = appBE.ID
–添加条件–
–where U.Name=’财务组’ and y.Effective_IsEffective=1 and authorityBE.Opinion=2

———————————————————————————————————————
—–用户对应的权限菜单–只显示系统模块—————————————————————————————-
select distinct a.name 组织,y.Name 用户,U.Name 用户组,b.Name 角色名称,d.Name 模块名称,
case authorityBE.Opinion when 0 then ‘拒绝’ when 2 then ‘允许’ end as 权限值 from Base_UserOrgRole x
inner join base_role_trl b on x.role=b.id and b.SysMLFlag=’zh-CN’ and b.name<>’导出报表权限’ and b.Name<>’OBA’
inner join base_role roleBE on x.role=roleBE.id
inner join Base_RoleApplication z on x.role=z.role
inner join Base_Application_Trl d on z.application=d.id and d.SysMLFlag=’zh-CN’
inner join base_userorg e on x.userorg=e.id
inner join base_organization_trl a on e.org=a.id
inner join Base_User y on e.[User]=y.id
inner join Base_UserGroup_Trl U on y.UserGroup=U.ID –显示用户组
inner join vw_UBF_Security_Right_Task authorityBE on authorityBE.RoleId = roleBE.ID
inner join UBF_Assemble_Menu menuBE on authorityBE.AuthorityItemId =menuBE.ID
inner join UBF_Assemble_Menu_Trl menuBETrl on menuBETrl.ID = menuBE.ID and menuBETrl.SysMLFlag=’zh-CN’
inner join Base_Application appBE on menuBE.[Application] = appBE.ID
–添加条件–
–where U.Name=’财务组’ and y.Effective_IsEffective=1 and authorityBE.Opinion=2

Sql Server简单加密与解密

在SQL Server 2005和SQL Server 2008之前。如果希望加密敏感数据,如财务信息、工资或身份证号,必须借助外部应用程序或算法。SQL Server 2005引入内建数据加密的能力,使用证书、密钥和系统函数的组合来完成。

与数字证书类似。SQL Server 证书包括公钥和私钥这一对密钥,它们都用来加密和解密数据。SQL Server也拥有创建非对称密钥和对称密钥对象的能力。非对称密钥(asymmetric key)与证书相似,公钥用来加密数据库,私钥用来解密数据。非对称密钥和证书都提供了强大的加密强度。但在完成复杂的加密|解密过程中具有更多的性能开销。更适合对大量数据进行加密,且具有较低性能开销的解决方案是对称密钥(symmetric key),它是对相同数据进行加密和解密的一个密钥。

SQL Server允许将这些加密能力放到加密层次结构中。当安装了SQL Server后,在数据库master中创建名为服务主密钥的服务器级别证书,并将其默绑定到SQL Server服务账号登录名。服务主密钥用来加密所有其他数据库证书和创建在SQL Server实例中的密钥。另外,你也可以在用户数据库中创建数据库主密钥(Database Master Key),它可以用来加密数据库证书和密钥。

在SQL Server 2008中,微软引入了透明数据加密(TDE),它对整个数据库进行加密,而不需要修改任何访问它的应用程序。数据、日志文件和相关的数据库备份都是加密的。假如数据库被偷,如果没有数据库加密密钥(DEK)是不能访问数据的。

通过通行短语(PassPhrase)加密

对于不涉及证书及密钥的应急的数据加密,可以直接基于用户提供的密码来加密和解密数据。通行短语(PassPhrase)是允许存在空格的密码。这个PassPhrase不会存储在数据库中,因而也就意味着不会被使用存储的系统数据“破解”。同时,可以使用空格创建一个长的、易于记忆的句子来加密和解密敏感数据。

我们需要了解的一对函数是

ENCRYPTBYPASSPHRASE(http://technet.microsoft.com/zh-cn/library/ms190357.aspx

DECRYPTBYPASSPHRASE(http://technet.microsoft.com/zh-cn/library/ms188910.aspx

这一对函数必须使用相同的参数。

——–加密函数———–
CREATE FUNCTION dbo.EncryptByPassPhrasePwd(@password nvarchar(50))
RETURNS varbinary(max)
AS
BEGIN
declare @pwd varbinary(max)
 SELECT @pwd = EncryptByPassPhrase(
‘1234567’,
@password)
return @pwd
END
———解密函数———-
CREATE  FUNCTION dbo.DecryptByPassPhrasePwd(@password varbinary(max))
RETURNS nvarchar(max)
AS
BEGIN
declare @pwd nvarchar(max)
 SELECT @pwd =CAST( DecryptByPassPhrase(‘1234567’,@password)  as nvarchar(max))
return @pwd
END
注意:123456 是用于生成对称密钥的通行短语
select dbo.EncryptByPassPhrasePwd(‘test11’) as result
select dbo.DecryptByPassPhrasePwd(0x010000004779C35F96DACC0EC6A8C518E186D203B1A336EE5B8A51B4271B54F56F516ECE) as result