使用的软件: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)会引发错误。
请帮助我们解决流程数据库问题。
答案 0 :(得分:0)
我得到了答案。如果我们想在1200兼容模式下操作Tabular模型,我们需要使用新的Microsoft.AnalysisServices.Tabular.dll而不是Microsoft.AnalysisServices.dll。
参考https://msdn.microsoft.com/en-us/library/mt706505.aspx?f=255&MSPPError=-2147217396