首页 > 解决方案 > 使用 AMO 创建 Analysis Services 数据库的精确副本

问题描述

我正在尝试使用 Microsoft.AnalysisServices 命名空间自动创建 Analysis Services 数据库的精确副本。我的代码是:

using (var server = new Server())
{
    server.Connect(connString);
    var newDb = server.Databases.GetByName(dbName).Clone();
    newDb.Name = newDbName;
    newDb.ID = server.Databases.GetNewID();
    server.Databases.Add(newDb);
    newDb.Update(UpdateOptions.ExpandFull);
    server.Disconnect();
}

然而,它似乎创建了一个空数据库,因为从 SSMS 我看不到任何表、数据源和类似的东西(在此处查看我的屏幕截图)。

有没有办法来解决这个问题?谢谢。

标签: ssasazure-analysis-services

解决方案


@gmarchi 您还需要使用Model.clone() 方法克隆子模型对象以使其工作。您可以使用如下代码添加模型 -

        var connString = "Provider=MSOLAP;Data Source=asazure://westus2.asazure.windows.net/xxxxxxxxxxxx:rw";
        var dbName = "AW Internet Sales";
        var newDbName = "CloneDb";
        
        using (var server = new Server())
        {
            server.Connect(connString);
            var newDb = server.Databases.GetByName(dbName).Clone();
            var newModel = server.Databases.GetByName(dbName).Model.Clone();
            
            newDb.Name = newDbName;
            newDb.ID = server.Databases.GetNewID();
            newDb.Model = newModel;

            server.Databases.Add(newDb);
            newDb.Update(UpdateOptions.ExpandFull);
            server.Disconnect();
        }

请在代码运行后在屏幕截图下方找到。 在此处输入图像描述

请让我知道,如果你有任何问题。谢谢。


推荐阅读