首页 > 解决方案 > 创建数据库 xmla 文件的脚本

问题描述

我正在寻找一种自动方法来生成在第一个屏幕截图中创建的文件,看看它是否可以完成:

在 SSMS 中生成文件的手动方法

它是一个xmla文件,详细说明了数据库中表的结构。最好是C#PowerShell中的解决方案,但任何方法都会受到赞赏。

第二个图像是所需输出文件的格式。这很容易从 SSMS 生成,但我想运行一个脚本来生成它:

所需的 xmla 输出文件

标签: c#powershellssmsssasxmla

解决方案


如果您使用的是SQL Server Analysis Services数据库:

C#中,您可以使用Microsoft.AnalysisServices.retail.amd64包,如下所示:

Server yourServer = new Server();
yourServer.Connect(@"Data Source=ServerName\InstanceName");

MajorObject[] yourDatabase = new MajorObject[1];
yourDatabase[0] = yourServer.Databases["DbName"];

var scripter = new Scripter();
XmlWriter xmlWriter = XmlWriter.Create(@"FilePath")

看看下面的链接。这个问题与您的问题相似:

需要 SMO 的 c# 脚本,它从分析服务数据库创建 XMLA 脚本


如果您使用的是SQL Server数据库:

C#中,您可以使用Microsoft.SqlServer.SqlManagementObjects包为数据库对象生成脚本,如下所示:

SQL Server 管理对象 (SMO) 编程指南

Server yourServer = new Server("ServerName");

Scripter scripter = new Scripter(yourServer);

Database yourDb = yourServer.Databases["DbName"];

foreach (Table table in yourDb.Tables)
{
    tableScripts = table.Script();
    foreach (string script in tableScripts)
        Console.WriteLine(script);
}

您还可以对、等使用脚本选项。我建议您查看以下链接:IfNotExistsScriptDrops

使用 SMO for SQL Server 为数据库对象生成脚本

使用 SMO 编写数据库对象脚本

然后,您可以使用C#代码创建脚本文件。


推荐阅读