Код: Выделить всё
Tabular.Database d = ssasServer.Databases.FindByName(cubeDBName);
Tabular.Database dnew = ssasServer.Databases.FindByName(tempDBName);
ssasServer.Databases.Remove(d.ID);
ssasServer.Databases.Remove(dnew.ID);
dnew.Name = cubeDBName;
ssasServer.Databases.Add(d);
d?.Drop();
ssasServer.Databases.Add(dnew);
dnew.Update();
Код: Выделить всё
Tabular.Database d = new Tabular.Database()
{
Name = ssasServer.Databases.GetNewName(newDbName),
ID = newDatabaseName + $"_" + DateTime.Now.ToString("ddMMyyyyhhmmss"),
CompatibilityLevel = compatibilityLevel,
//This set to ssasServer.SupportedCompatibilityLevels.Split(',').Where(a => a.ToCharArray().Count() == 4).Select(Int32.Parse).Max() which resolves to 1608
StorageEngineUsed = StorageEngineUsed.TabularMetadata,
};
ssasServer.Databases.Add(d);
d.Update();
Код: Выделить всё
Tabular.Server s = new Tabular.Server();
s.Disconnect();
s.Connect(GetTabular(ssasServerName, serviceAccountUserName, serviceAccountPassword));
Табличные базы данных не поддерживают понижение уровня совместимости. Текущий
уровень совместимости: '1608'. Запрошенный уровень совместимости: '1600'
Это легко обойти, установив уровень совместимости в функции горячей замены на 1608, но у меня вопрос: «почему?» , почему API «Microsoft.AnalysisServices.Tabular» возвращает 1600, когда в «SupportedCompatibilityLevels» указано 1608, И если вы перейдете на сервер в SSMS и проверите куб, для него установлено значение 1608?
Подробнее здесь: https://stackoverflow.com/questions/791 ... -but-api-r