创建数据库xmla文件的脚本

问题描述

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

Manual method for generating file in SSMS

它是一个 xmla 文件,详细说明了数据库中表的结构。最好是 C#PowerShell 中的解决方案,但任何方法都将不胜感激。

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

Desired xmla output file

解决方法

如果您使用的是 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")

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

Need c# script for SMO which creates XMLA script from analysis service database


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

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

SQL Server Management Objects (SMO) Programming Guide

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等。我建议您查看以下链接:

Generate Scripts for database objects with SMO for SQL Server

Scripting Database Objects using SMO

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