SQL Server 2016:使用AMO库

时间:2016-08-24 10:26:10

标签: sql-server database process ssas

使用的软件:SQL Server 2016,Visual Studio 2015。

描述

代码开始:

server.Restore(backupFolderPath + "\\" + model.Value.Trim(), model.Key.Trim(), true)
server.Refresh(true, RefreshType.LoadedObjectsOnly);
Database database = server.Databases.GetByName(model.Key.Trim());
database.DataSources[0].ConnectionString = connectionString;
database.DataSources[0].Update();
database.Update();

database.Process(ProcessType.ProcessFull);

代码结束

从.abf文件恢复后,进程数据库抛出以下错误。

"此命令无法在数据库'测试会话模型'上执行。因为已将StorageEngineUsed设置为TabularMetadata。对于此模式下的数据库,必须使用Tabular API来管理数据库。\ r \ n"

我们的模型是基于内存的模型。但'StorageEngineUsed'被设置为'TabularMetadata'。我们尝试使用以下代码将“StorageEngineUsed”设置为“InMemory”。

database.StorageEngineUsed = StorageEngineUsed.InMemory;
database.Update();

仍然在进程数据库失败并出现以下错误。 "数据库&BI BI会话模型复制' StorageEngineUsed设置为InMemory时,兼容级别大于1103。 兼容级别为1200或更高的表格数据库必须使用设置为TabularMetadata的StorageEngineUsed。\ r \ n"

但是将兼容性设置为小于1200(1103)会引发错误。

请帮助我们解决流程数据库问题。

1 个答案:

答案 0 :(得分:0)

我得到了答案。如果我们想在1200兼容模式下操作Tabular模型,我们需要使用新的Microsoft.AnalysisServices.Tabular.dll而不是Microsoft.AnalysisServices.dll。

参考https://msdn.microsoft.com/en-us/library/mt706505.aspx?f=255&MSPPError=-2147217396