问题描述
我正在寻找一种自动生成在第一个屏幕截图中创建的文件的方法,以查看是否可以完成:
它是一个 xmla 文件,详细说明了数据库中表的结构。最好是 C# 或 PowerShell 中的解决方案,但任何方法都将不胜感激。
第二个图像是所需输出文件的格式。这很容易从 SSMS 生成,但我想运行一个脚本来生成它:
解决方法
如果您使用的是 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);
}
您还可以将脚本选项用于IfNotExists
、ScriptDrops
等。我建议您查看以下链接:
Generate Scripts for database objects with SMO for SQL Server
Scripting Database Objects using SMO
然后,您可以使用 C# 代码创建脚本文件。