因此问题如下:我们有多个租户,多个数据库托管在不同的Azure sql主机上,每个租户都具有不同的工作区。由于租户数量很大,因此为每个租户生成报告然后将其上载到相应的应用程序工作区并不是很可行。因此,我们尝试基于某些配置使整个过程自动化(我们对每个租户都有相同的报告,只是数据源不同)。我们设法将相同的报告上传到相应的应用程序工作区,但是我们无法以编程方式更新ConnectionString。当我们尝试更改数据源时,似乎失败了。上传的文件保留其原始的ConnectionString。此外,还使用DirectQuery设置了报告。
示例代码:
var import = await pbiClient.Imports.PostImportWithFileAsyncInGroup(GroupId, fileStream, importName, nameConflict);//Name conflicts : Abort, Ignore, Overwrite
var datasets = await pbiClient.Datasets.GetDatasetsInGroupAsync(GroupId);
var latestDataset = datasets.Value.FirstOrDefault(x => x.Name == importName);
var reports = await pbiClient.Reports.GetReportsInGroupAsync(GroupId);
var latestReport = reports.Value.FirstOrDefault(x => x.Name == importName);
var connectionDetails = new ConnectionDetails($"Data Source={DbHost} ;Initial Catalog={DbName};Encrypt=True;TrustServerCertificate=True;PersistSecurityInfo=True;User Id={DbPowerBIUser};Password={DbPowerBIUser};MultipleActiveResultSets=true;");
var resp = await pbiClient.Datasets.SetAllDatasetConnectionsInGroupWithHttpMessagesAsync(GroupId, latestDataset.Id, connectionDetails);
答案 0 :(得分:0)