为了账号安全,请及时绑定邮箱和手机立即绑定

检索多维数据库对象目录

检索多维数据库对象目录

C#
ABOUTYOU 2022-12-24 13:49:04
我正在尝试列出在 SSAS 服务器中找到的所有对象(多维数据集、维度、分区...)。我可以使用以下项目来做到这一点:GitHub - SSASAMODB我正在尝试为每个对象检索相关目录(在数据目录中)。我无法这样做,因为文件名包含一些增量数字,每次您对数据库中的对象进行更改时,这些数字都会更改。例子:多维数据集名称:TestCube文件夹:|Data Dir|\<SSASDB>\TestCube.0.cub更改并重新处理 Cube 后,它会更改为另一个值|Data Dir|\<SSASDB>\TestCube.1.cubAMO 类中是否有返回每个对象的文件夹路径的属性?文件夹名称中包含的增量编号的值是多少?有一些解决方法吗?由于我只安装了 SQL Server Data Tools 商业智能工具,我需要一个与SSIS 脚本任务兼容的解决方案,因为这是我处理数据的唯一方式。注意网上有很多关于从脚本任务中使用AMO的文章环境: SQL Server 2014
查看完整描述

1 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

由于您以多维数据集为例,这意味着您正在使用多维模型而不是表格。


SSAS 数据目录内容层次结构

使用 SSAS 构建多个多维立方体后,我可以假设以下树是数据目录层次结构:


|- Data Directory

    |- Database (.db)

        |- Dimension (.dim)

        |- Role (.role)

        |- Mining Structure (.dms)

        |- Data Source (.ds)

        |- Data Source View (.dsv)

        |- Multidimensional Cube (.cub)

            |- Measure Group (.det)

                |- Partition (.prt)

                |- AggregationDesign (.agg)

上面树中的每个对象都可以以目录或/和 XML 文件的形式存储。

操作和 Kpis 信息存储在多维数据集 XML 配置文件中。

例子:

  • 对象:立方体

  • 目录:<DataDir>\<database>\<cube ID>.cub\

  • XML文件:<DataDir>\<database>\<cube ID>.cub.xml

将 SSAS AMO 对象链接到数据目录文件

使用 AMO 读取数据

为了从部署的 Analysis Cube 中读取 SSAS 对象,我改进了以下项目的代码以添加更多对象并将它们与相关目录/文件链接起来。

更新方法

要将每个 AMO 对象映射到相关的目录/XML 文件,我们必须从顶层(数据库)开始遍历对象并检索在每个级别中找到的文件/目录,并使用 .ID 属性和扩展名(如上面的树)

以下代码是用 C# 编写的,它是上面链接中发布的方法的更新版本:

请注意,该方法仅适用于本地服务器,或者您必须具有与包含数据目录的原始驱动器相同盘符的映射网络驱动器。此外,您必须具有访问分析服务器对象的权限

该代码被视为概念证明,可以改进

SSAS对象类

public class SSASObject

{


    public enum ObjectType{


        Cube = 0,

        MeasureGroup = 1,

        Dimension = 2,

        Partition = 3,

        AggregationDesign = 4,

        MiningStructure = 5,

        Role = 6,

        DataSource = 7,

        DataSourceView = 8,

        Database = 9,

        Server = 10,

        Kpi = 11,

        Action = 12


    }


    public int ID { get; set; } //incremental ID 

    public int? ParentID { get; set; } // Parent incremental ID

    public ObjectType Type { get; set; } // The Object type

    public string ObjectID { get; set; } // Object ID defined in SSAS

    public string ObjectName { get; set; } // Object Name defined in SSAS

    public string Extension { get; set; } // The Object extension

    public string FolderPath { get; set; } // The Object related directory

    public string FolderName { get; set; } // The directory name

    public DateTime? FolderModifiedDate { get; set; } // The directory last modified date

    public string FolderIncremetalID { get; set; } // The Incremental Number mentioned in the directory name

    public string XMLFilePath { get; set; } // The Object related XML file

    public string XMLFileName { get; set; } // The XML file name

    public DateTime? XmlModifiedDate { get; set; } // The XML file last modified date

    public string XmlIncremetalID { get; set; }  // The incremental number mentioned in the XML file name      



}

SSASAMO级

public static class SSASAMO

{

    public static List<SSASObject> ReadMeta(string ServerName)

    {

        try

        {



            List<SSASObject> result = new List<SSASObject>();


            String ConnStr;


            DateTime? dt = null;

            int idx = 0;

            int DbID = 0;

            int CubeID = 0;

            int ObjectID = 0;


            string DataDir;

            string OLAPServerName = ServerName;


            ConnStr = "Provider=MSOLAP;Data Source=" + OLAPServerName + ";";


            Server OLAPServer = new Server();

            OLAPServer.Connect(ConnStr);


            DataDir = OLAPServer.ServerProperties["DataDir"].Value;


            string[] DatabasesDir = System.IO.Directory.GetDirectories(DataDir, "*", System.IO.SearchOption.TopDirectoryOnly);

            string[] DatabasesFiles = System.IO.Directory.GetFiles(DataDir, "*", System.IO.SearchOption.TopDirectoryOnly);


            result.Add(new SSASObject

            {

                ID = idx,

                ParentID = null,

                FolderModifiedDate = System.IO.Directory.GetLastWriteTime(DataDir),

                FolderPath = DataDir,

                ObjectName = OLAPServerName,

                Type = SSASObject.ObjectType.Server

            });


            // Database

            foreach (Database OLAPDatabase in OLAPServer.Databases)

            {



                string CurrentDbDir = DatabasesDir.Where(x => x.StartsWith(DataDir + "\\" +  OLAPDatabase.ID.ToString() + ".") && x.EndsWith(".db")).DefaultIfEmpty("").First();

                string CurrentDbXmlFile = DatabasesFiles.Where(x => x.StartsWith(DataDir + "\\" + OLAPDatabase.ID.ToString() + ".") && x.EndsWith(".db.xml")).DefaultIfEmpty("").First();


                string[] DbObjectsDir = System.IO.Directory.GetDirectories(CurrentDbDir, "*", System.IO.SearchOption.TopDirectoryOnly);

                string[] DbObjectsFiles = System.IO.Directory.GetFiles(CurrentDbDir, "*", System.IO.SearchOption.TopDirectoryOnly);



                idx++;

                DbID = idx;

                result.Add(new SSASObject

                {

                    ID = idx,

                    ParentID = 0,

                    ObjectID = OLAPDatabase.ID,

                    FolderModifiedDate = CurrentDbDir == "" ? dt : System.IO.Directory.GetLastWriteTime(CurrentDbDir),

                    XmlIncremetalID = System.IO.Path.GetFileNameWithoutExtension(

                                                  System.IO.Path.GetFileNameWithoutExtension(CurrentDbXmlFile)).Substring(

                                                  System.IO.Path.GetFileNameWithoutExtension(CurrentDbXmlFile).IndexOf(".") + 1),

                    Extension = ".db",

                    FolderName = System.IO.Path.GetFileName(CurrentDbDir),

                    FolderPath = CurrentDbDir,

                    ObjectName = OLAPDatabase.Name,

                    Type = SSASObject.ObjectType.Database,

                    XMLFileName = System.IO.Path.GetFileName(CurrentDbXmlFile),

                    XMLFilePath = CurrentDbXmlFile,

                    XmlModifiedDate = CurrentDbXmlFile == "" ? dt : System.IO.File.GetLastWriteTime(CurrentDbXmlFile),

                    FolderIncremetalID = System.IO.Path.GetFileNameWithoutExtension(CurrentDbDir).Substring(

                                                  System.IO.Path.GetFileNameWithoutExtension(CurrentDbDir).IndexOf(".") + 1)

                });




                //Data Source

                foreach (DataSource OLAPDataSource in OLAPDatabase.DataSources)

                {

                    idx++;

                    string CurrentDataSourceDir = DbObjectsDir.Where(x => x.StartsWith(CurrentDbDir + "\\" + OLAPDataSource.ID.ToString() + ".") && x.EndsWith(".ds")).DefaultIfEmpty("").First();

                    string CurrentDataSourceXmlFile = DbObjectsFiles.Where(x => x.StartsWith(CurrentDbDir + "\\" + OLAPDataSource.ID.ToString() + ".") && x.EndsWith(".ds.xml")).DefaultIfEmpty("").First();

                    result.Add(new SSASObject

                    {

                        ID = idx,

                        ParentID = DbID,

                        ObjectID = OLAPDataSource.ID,

                        FolderModifiedDate = CurrentDataSourceDir == "" ? dt : System.IO.Directory.GetLastWriteTime(CurrentDataSourceDir),

                        XmlIncremetalID = System.IO.Path.GetFileNameWithoutExtension(

                                                      System.IO.Path.GetFileNameWithoutExtension(CurrentDataSourceXmlFile)).Substring(

                                                      System.IO.Path.GetFileNameWithoutExtension(CurrentDataSourceXmlFile).IndexOf(".") + 1),

                        Extension = ".ds",

                        FolderName = System.IO.Path.GetFileName(CurrentDataSourceDir),

                        FolderPath = CurrentDbDir,

                        ObjectName = OLAPDataSource.Name,

                        Type = SSASObject.ObjectType.DataSource,

                        XMLFileName = System.IO.Path.GetFileName(CurrentDataSourceXmlFile),

                        XMLFilePath = CurrentDataSourceXmlFile,

                        XmlModifiedDate = CurrentDataSourceXmlFile == "" ? dt : System.IO.File.GetLastWriteTime(CurrentDataSourceXmlFile),

                        FolderIncremetalID = System.IO.Path.GetFileNameWithoutExtension(CurrentDataSourceDir).Substring(

                                                      System.IO.Path.GetFileNameWithoutExtension(CurrentDataSourceDir).IndexOf(".") + 1)

                    });



                }


                //Data Source View

                foreach (DataSourceView OLAPDataSourceView in OLAPDatabase.DataSourceViews)

                {

                    idx++;

                    string CurrentDataSourceViewDir = DbObjectsDir.Where(x => x.StartsWith(CurrentDbDir + "\\" + OLAPDataSourceView.ID.ToString() + ".") && x.EndsWith(".dsv")).DefaultIfEmpty("").First();

                    string CurrentDataSourceViewXmlFile = DbObjectsFiles.Where(x => x.StartsWith(CurrentDbDir + "\\" + OLAPDataSourceView.ID.ToString() + ".") && x.EndsWith(".dsv.xml")).DefaultIfEmpty("").First();

                    result.Add(new SSASObject

                    {

                        ID = idx,

                        ParentID = DbID,

                        ObjectID = OLAPDataSourceView.ID,

                        FolderModifiedDate = CurrentDataSourceViewDir == "" ? dt : System.IO.Directory.GetLastWriteTime(CurrentDataSourceViewDir),

                        XmlIncremetalID = System.IO.Path.GetFileNameWithoutExtension(

                                                      System.IO.Path.GetFileNameWithoutExtension(CurrentDataSourceViewXmlFile)).Substring(

                                                      System.IO.Path.GetFileNameWithoutExtension(CurrentDataSourceViewXmlFile).IndexOf(".") + 1),

                        Extension = ".dsv",

                        FolderName = System.IO.Path.GetFileName(CurrentDataSourceViewDir),

                        FolderPath = CurrentDbDir,

                        ObjectName = OLAPDataSourceView.Name,

                        Type = SSASObject.ObjectType.DataSourceView,

                        XMLFileName = System.IO.Path.GetFileName(CurrentDataSourceViewXmlFile),

                        XMLFilePath = CurrentDataSourceViewXmlFile,

                        XmlModifiedDate = CurrentDataSourceViewXmlFile == "" ? dt : System.IO.File.GetLastWriteTime(CurrentDataSourceViewXmlFile),

                        FolderIncremetalID = System.IO.Path.GetFileNameWithoutExtension(CurrentDataSourceViewDir).Substring(

                                                      System.IO.Path.GetFileNameWithoutExtension(CurrentDataSourceViewDir).IndexOf(".") + 1)

                    });



                }



                //Dimension

                foreach (Dimension OLAPDimension in OLAPDatabase.Dimensions)

                {


                    idx++;

                    string DimensionDir = DbObjectsDir.Where(x => x.StartsWith(CurrentDbDir + "\\" + OLAPDimension.ID.ToString() + ".") && x.EndsWith(".dim")).DefaultIfEmpty("").First();

                    string DimensionXmlFile = DbObjectsFiles.Where(x => x.StartsWith(CurrentDbDir + "\\" + OLAPDimension.ID.ToString() + ".") && x.EndsWith(".dim.xml")).DefaultIfEmpty("").First();


                    result.Add(new SSASObject

                    {

                        ID = idx,

                        ParentID = DbID,

                        ObjectID = OLAPDimension.ID,

                        FolderModifiedDate = DimensionDir == "" ? dt : System.IO.Directory.GetLastWriteTime(DimensionDir),

                        XmlIncremetalID = System.IO.Path.GetFileNameWithoutExtension(

                                                  System.IO.Path.GetFileNameWithoutExtension(DimensionXmlFile)).Substring(

                                                  System.IO.Path.GetFileNameWithoutExtension(DimensionXmlFile).IndexOf(".") + 1),

                        Extension = ".dim",

                        FolderName = System.IO.Path.GetFileName(DimensionDir),

                        FolderPath = DimensionDir,

                        ObjectName = OLAPDimension.Name,

                        Type = SSASObject.ObjectType.Dimension,

                        XMLFileName = System.IO.Path.GetFileName(DimensionXmlFile),

                        XMLFilePath = DimensionXmlFile,

                        XmlModifiedDate = DimensionXmlFile == "" ? dt : System.IO.File.GetLastWriteTime(DimensionXmlFile),

                        FolderIncremetalID = System.IO.Path.GetFileNameWithoutExtension(DimensionDir).Substring(

                                             System.IO.Path.GetFileNameWithoutExtension(DimensionDir).IndexOf(".") + 1)

                    });

                }


                // Cube

                foreach (Cube OLAPCubex in OLAPDatabase.Cubes)

                {



                    idx++;

                    CubeID = idx;


                    string CubeDir = DbObjectsDir.Where(x => x.StartsWith(CurrentDbDir + "\\" + OLAPCubex.ID.ToString() + ".") && x.EndsWith(".cub")).DefaultIfEmpty("").First();

                    string CubeXmlFile = DbObjectsFiles.Where(x => x.StartsWith(CurrentDbDir + "\\" + OLAPCubex.ID.ToString() + ".") && x.EndsWith(".cub.xml")).DefaultIfEmpty("").First();


                    string[] CubeMeasureGroupsDir = System.IO.Directory.GetDirectories(CubeDir, "*", System.IO.SearchOption.TopDirectoryOnly);

                    string[] CubeMeasureGroupsFiles = System.IO.Directory.GetFiles(CubeDir, "*", System.IO.SearchOption.TopDirectoryOnly);



                    result.Add(new SSASObject

                    {

                        ID = idx,

                        ParentID = DbID,

                        ObjectID = OLAPCubex.ID,

                        FolderModifiedDate = CubeDir == "" ? dt : System.IO.Directory.GetLastWriteTime(CubeDir),

                        XmlIncremetalID = System.IO.Path.GetFileNameWithoutExtension(

                                                  System.IO.Path.GetFileNameWithoutExtension(CubeXmlFile)).Substring(

                                                  System.IO.Path.GetFileNameWithoutExtension(CubeXmlFile).IndexOf(".") + 1),

                        Extension = ".cub",

                        FolderName = System.IO.Path.GetFileName(CubeDir),

                        FolderPath = CubeDir,

                        ObjectName = OLAPCubex.Name,

                        Type = SSASObject.ObjectType.Cube,

                        XMLFileName = System.IO.Path.GetFileName(CubeXmlFile),

                        XMLFilePath = CubeXmlFile,

                        XmlModifiedDate = CubeXmlFile == "" ? dt : System.IO.File.GetLastWriteTime(CubeXmlFile),

                        FolderIncremetalID = System.IO.Path.GetFileNameWithoutExtension(CubeDir).Substring(

                                             System.IO.Path.GetFileNameWithoutExtension(CubeDir).IndexOf(".") + 1)

                    });


                    //Measure Group

                    foreach (MeasureGroup OLAPMeasureGroup in OLAPCubex.MeasureGroups)

                    {


                        idx++;

                        ObjectID = idx;

                        string MeasureGroupDir = CubeMeasureGroupsDir.Where(x => x.StartsWith(CubeDir + "\\" + OLAPMeasureGroup.ID.ToString() + ".") && x.EndsWith(".det")).DefaultIfEmpty("").First();

                        string MeasureGroupXmlFile = CubeMeasureGroupsFiles.Where(x => x.StartsWith(CubeDir + "\\" + OLAPMeasureGroup.ID.ToString() + ".") && x.EndsWith(".det.xml")).DefaultIfEmpty("").First();


                        string[] GroupPartitionDir = System.IO.Directory.GetDirectories(MeasureGroupDir, "*", System.IO.SearchOption.TopDirectoryOnly);

                        string[] GroupPartitionFiles = System.IO.Directory.GetFiles(MeasureGroupDir, "*", System.IO.SearchOption.TopDirectoryOnly);


                        result.Add(new SSASObject

                        {

                            ID = idx,

                            ParentID = CubeID,

                            ObjectID = OLAPMeasureGroup.ID,

                            FolderModifiedDate = MeasureGroupDir == "" ? dt : System.IO.Directory.GetLastWriteTime(MeasureGroupDir),

                            XmlIncremetalID = System.IO.Path.GetFileNameWithoutExtension(

                                                  System.IO.Path.GetFileNameWithoutExtension(MeasureGroupXmlFile)).Substring(

                                                  System.IO.Path.GetFileNameWithoutExtension(MeasureGroupXmlFile).IndexOf(".") + 1),

                            Extension = ".det",

                            FolderName = System.IO.Path.GetFileName(MeasureGroupDir),

                            FolderPath = MeasureGroupDir,

                            ObjectName = OLAPMeasureGroup.Name,

                            Type = SSASObject.ObjectType.MeasureGroup,

                            XMLFileName = System.IO.Path.GetFileName(MeasureGroupXmlFile),

                            XMLFilePath = MeasureGroupXmlFile,

                            XmlModifiedDate = MeasureGroupXmlFile == "" ? dt : System.IO.File.GetLastWriteTime(MeasureGroupXmlFile),

                            FolderIncremetalID = System.IO.Path.GetFileNameWithoutExtension(MeasureGroupDir).Substring(

                                                 System.IO.Path.GetFileNameWithoutExtension(MeasureGroupDir).IndexOf(".") + 1)

                        });


                        //Aggregations

                        foreach (AggregationDesign OLAPAggregationDesign in OLAPMeasureGroup.AggregationDesigns)

                        {


                            string AggregationDir = GroupPartitionDir.Where(x => x.StartsWith(MeasureGroupDir + "\\" + OLAPAggregationDesign.ID.ToString() + ".") && x.EndsWith(".agg")).DefaultIfEmpty("").First();

                            string AggregationXmlFile = GroupPartitionFiles.Where(x => x.StartsWith(MeasureGroupDir + "\\" + OLAPAggregationDesign.ID.ToString() + ".") && x.EndsWith(".agg.xml")).DefaultIfEmpty("").First();


                            idx++;


                            result.Add(new SSASObject

                            {

                                ID = idx,

                                ParentID = ObjectID,

                                ObjectID = OLAPAggregationDesign.ID,

                                FolderModifiedDate = AggregationDir == "" ? dt : System.IO.Directory.GetLastWriteTime(AggregationDir),

                                XmlIncremetalID = System.IO.Path.GetFileNameWithoutExtension(

                                                  System.IO.Path.GetFileNameWithoutExtension(AggregationXmlFile)).Substring(

                                                  System.IO.Path.GetFileNameWithoutExtension(AggregationXmlFile).IndexOf(".") + 1),

                                Extension = ".agg",

                                FolderName = System.IO.Path.GetFileName(AggregationDir),

                                FolderPath = AggregationDir,

                                ObjectName = OLAPAggregationDesign.Name,

                                Type = SSASObject.ObjectType.AggregationDesign,

                                XMLFileName = System.IO.Path.GetFileName(AggregationXmlFile),

                                XMLFilePath = AggregationXmlFile,

                                XmlModifiedDate = AggregationXmlFile == "" ? dt : System.IO.File.GetLastWriteTime(AggregationXmlFile),

                                FolderIncremetalID = System.IO.Path.GetFileNameWithoutExtension(AggregationDir).Substring(

                                                     System.IO.Path.GetFileNameWithoutExtension(AggregationDir).IndexOf(".") + 1)


                            });



                        }



                        //Partitions

                        foreach (Partition OLAPPartition in OLAPMeasureGroup.Partitions)

                        {


                            string PartitionDir = GroupPartitionDir.Where(x => x.StartsWith(MeasureGroupDir + "\\" + OLAPPartition.ID.ToString() + ".") && x.EndsWith(".prt")).DefaultIfEmpty("").First();

                            string PartitionXmlFile = GroupPartitionFiles.Where(x => x.StartsWith(MeasureGroupDir + "\\" + OLAPPartition.ID.ToString() + ".") && x.EndsWith(".prt.xml")).DefaultIfEmpty("").First();


                            idx++;


                            result.Add(new SSASObject

                            {

                                ID = idx,

                                ParentID = ObjectID,

                                ObjectID = OLAPPartition.ID,

                                FolderModifiedDate = PartitionDir == "" ? dt : System.IO.Directory.GetLastWriteTime(PartitionDir),

                                XmlIncremetalID = System.IO.Path.GetFileNameWithoutExtension(

                                                  System.IO.Path.GetFileNameWithoutExtension(PartitionXmlFile)).Substring(

                                                  System.IO.Path.GetFileNameWithoutExtension(PartitionXmlFile).IndexOf(".") + 1),

                                Extension = ".prt",

                                FolderName = System.IO.Path.GetFileName(PartitionDir),

                                FolderPath = PartitionDir,

                                ObjectName = OLAPPartition.Name,

                                Type = SSASObject.ObjectType.Partition,

                                XMLFileName = System.IO.Path.GetFileName(PartitionXmlFile),

                                XMLFilePath = PartitionXmlFile,

                                XmlModifiedDate = PartitionXmlFile == "" ? dt : System.IO.File.GetLastWriteTime(PartitionXmlFile),

                                FolderIncremetalID = System.IO.Path.GetFileNameWithoutExtension(PartitionDir).Substring(

                                                     System.IO.Path.GetFileNameWithoutExtension(PartitionDir).IndexOf(".") + 1)


                            });


                        }







                    }



                }


                //Mining Structure

                foreach (MiningStructure OLAPMiningStructure in OLAPDatabase.MiningStructures)

                {


                    idx++;


                    string MiningStructureDir = DbObjectsDir.Where(x => x.StartsWith(CurrentDbDir + "\\" + OLAPMiningStructure.ID.ToString() + ".") && x.EndsWith(".dms")).DefaultIfEmpty("").First();

                    string MiningStructureXmlFile = DbObjectsFiles.Where(x => x.StartsWith(CurrentDbDir + "\\" + OLAPMiningStructure.ID.ToString() + ".") && x.EndsWith(".dms.xml")).DefaultIfEmpty("").First();


                    result.Add(new SSASObject

                    {

                        ID = idx,

                        ParentID = DbID,

                        ObjectID = OLAPMiningStructure.ID,

                        FolderModifiedDate = MiningStructureDir == "" ? dt : System.IO.Directory.GetLastWriteTime(MiningStructureDir),

                        XmlIncremetalID = System.IO.Path.GetFileNameWithoutExtension(

                                          System.IO.Path.GetFileNameWithoutExtension(MiningStructureXmlFile)).Substring(

                                          System.IO.Path.GetFileNameWithoutExtension(MiningStructureXmlFile).IndexOf(".") + 1),

                        Extension = ".ds",

                        FolderName = System.IO.Path.GetFileName(MiningStructureDir),

                        FolderPath = MiningStructureDir,

                        ObjectName = OLAPMiningStructure.Name,

                        Type = SSASObject.ObjectType.MiningStructure,

                        XMLFileName = System.IO.Path.GetFileName(MiningStructureXmlFile),

                        XMLFilePath = MiningStructureXmlFile,

                        XmlModifiedDate = MiningStructureXmlFile == "" ? dt : System.IO.File.GetLastWriteTime(MiningStructureXmlFile),

                        FolderIncremetalID = System.IO.Path.GetFileNameWithoutExtension(MiningStructureDir).Substring(

                                             System.IO.Path.GetFileNameWithoutExtension(MiningStructureDir).IndexOf(".") + 1)


                    });

                }



                //Role

                foreach (Role OLAPRole in OLAPDatabase.Roles)

                {


                    idx++;


                    string RoleDir = DbObjectsDir.Where(x => x.StartsWith(CurrentDbDir + "\\" + OLAPRole.ID.ToString() + ".") && x.EndsWith(".dms")).DefaultIfEmpty("").First();

                    string RoleXmlFile = DbObjectsFiles.Where(x => x.StartsWith(CurrentDbDir + "\\" + OLAPRole.ID.ToString() + ".") && x.EndsWith(".dms.xml")).DefaultIfEmpty("").First();


                    result.Add(new SSASObject

                    {

                        ID = idx,

                        ParentID = DbID,

                        ObjectID = OLAPRole.ID,

                        FolderModifiedDate = RoleDir == "" ? dt : System.IO.Directory.GetLastWriteTime(RoleDir),

                        XmlIncremetalID = System.IO.Path.GetFileNameWithoutExtension(

                                          System.IO.Path.GetFileNameWithoutExtension(RoleXmlFile)).Substring(

                                          System.IO.Path.GetFileNameWithoutExtension(RoleXmlFile).IndexOf(".") + 1),

                        Extension = ".ds",

                        FolderName = System.IO.Path.GetFileName(RoleDir),

                        FolderPath = RoleDir,

                        ObjectName = OLAPRole.Name,

                        Type = SSASObject.ObjectType.Role,

                        XMLFileName = System.IO.Path.GetFileName(RoleXmlFile),

                        XMLFilePath = RoleXmlFile,

                        XmlModifiedDate = RoleXmlFile == "" ? dt : System.IO.File.GetLastWriteTime(RoleXmlFile),

                        FolderIncremetalID = System.IO.Path.GetFileNameWithoutExtension(RoleDir).Substring(

                                             System.IO.Path.GetFileNameWithoutExtension(RoleDir).IndexOf(".") + 1)


                    });


                }


            }




            return result;

        }

        catch (Exception ex)

        {

            return null;

        }

    }


}

GitHub项目

我创建了一个小型 Windows 应用程序并将其上传到 GitHub,您可以将其作为单独的工具使用,或者您可以简单地复制到 Script Task 项目中的 Classes 并在 Script 中使用它。


查看完整回答
反对 回复 2022-12-24
  • 1 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号