【问题标题】:Manage TablePermissions and ColumnPermissions in SSAS tabular 2017在 SSAS 表格 2017 中管理 TablePermissions 和 ColumnPermissions
【发布时间】:2019-02-27 12:10:09
【问题描述】:

有什么方法可以完全管理 SSAS 表格 2017 (1400) 中的安全性?

我想使用 Microsoft.AnalysisServices.Tabular dll 从 C# 管理角色。

我无法访问 ColumnPermissions(或者我不知道如何)和设置 TablePermissions 过滤器。

这是我的代码:

private static void ReplaceRolesAndMembersWithInitialValues(Database db, Model model, List<CubeRoleModel> initRolesForPostgres)
    {
        var roles = model.Roles;
        if (roles.Count > 0)
        {
            var rolesName = roles.Select(x => x.Name).Distinct().ToList();
            foreach (var n in rolesName)
            {
                roles.Remove(n);
            }
            model.SaveChanges();
        }

        if (initRolesForPostgres.Count > 0)
        {
            var tablesNames = new HashSet<string>(model.Tables.Select(a => a.Name).Distinct().ToList());
            var tables = model.Tables;
            Dictionary<string, Table> dictTables = new Dictionary<string, Table>();
            foreach (var t in tables)
            {
                dictTables.Add(t.Name, t);
            }

            foreach (var n in initRolesForPostgres)
            {
                ModelRole newRole = new ModelRole
                {
                    Name = n.RoleName,
                    Description = n.RoleDescription,
                    ModelPermission = n.ModelPermission
                };

                if (n.Members.Count > 0)
                {
                    foreach (var m in n.Members)
                    {
                        var nMem = new WindowsModelRoleMember
                        {
                            MemberName = m.MemberName
                        };
                        newRole.Members.Add(nMem);
                    }
                }

                if (n.TablePermissions.Count > 0)
                {
                    var tb = newRole.TablePermissions;
                    foreach (var tabPerm in n.TablePermissions)
                    {
                        if (tables.Contains(tabPerm.TableName) && string.IsNullOrWhiteSpace(tabPerm.TableFilters) == false)
                        {
                            TablePermission newTablePer = new TablePermission
                            {
                                Name = tabPerm.TableName,
                                FilterExpression = tabPerm.TableFilters
                            };

                            if (newTablePer.Validate().ContainsErrors) { continue; }
                            tb.Add(newTablePer);
                        }
                    }
                }

                if (newRole.Validate().ContainsErrors) { continue; }
                model.Roles.Add(newRole);
            }
            model.SaveChanges();
        }
    }

有什么想法吗?

【问题讨论】:

    标签: c# ssas tabular


    【解决方案1】:

    1 天后,我设法解决了这个问题。首先,您应该获得 Microsoft.AnalysisServices.Tabular 和 Microsoft.AnalysisServices.Core 的最后一个 DLL。您将在 Microsoft SQL Server 2017 安装文件夹中找到此 dll。

    在此之后,您将找到您需要的所有信息here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多