簡體   English   中英

PowerBIAPI - 選擇器 # 不支持操作 - 連接詳細信息包含參數” - 更新報表的 PowerBI 數據集中的 ServerName

[英]PowerBIAPI - Operation is not supported for selector # - connection details contains parameters" - update ServerName in PowerBI Dataset of the Report

我在上傳的 power bi 報告的數據集中更新服務器詳細信息時遇到問題。 請幫忙。

在這里,我使用了 2 種方法。

方法一

  1. Microsoft.PowerBI.Api.V2 UpdateDatasourcesInGroup中使用了以下方法

     public static void UpdateSqlDatabaseConnectionString(string WorkspaceId, string DatasetId, string Server, string Database) { var tokenCredentials = GetTokenCredentials(); using (var pbiClient = new PowerBIClient(new Uri(ApiUrl), tokenCredentials.Item1)) { Datasource targetDatasource = pbiClient.Datasets.GetDatasourcesInGroup(WorkspaceId, DatasetId).Value.First(); string currentServer = targetDatasource.ConnectionDetails.Server; string currentDatabase = targetDatasource.ConnectionDetails.Database; if (Server.ToLower().Equals(currentServer.ToLower()) && Database.ToLower().Equals(currentDatabase.ToLower())) { Console.WriteLine("New server and database name are the same as the old names"); return; } DatasourceConnectionDetails connectionDetails = new DatasourceConnectionDetails { Database = Database, Server = Server }; UpdateDatasourceConnectionRequest updateConnRequest = new UpdateDatasourceConnectionRequest { DatasourceSelector = targetDatasource, ConnectionDetails = connectionDetails }; UpdateDatasourcesRequest updateDatasourcesRequest = new UpdateDatasourcesRequest(updateConnRequest); pbiClient.Datasets.UpdateDatasourcesInGroup(WorkspaceId, DatasetId, updateDatasourcesRequest); } }

在提琴手中捕獲了請求

要求:

{
  "updateDetails": [
    {
      "connectionDetails": {
        "server": "OldServer",
        "database": "OldDatabase"
      },
      "datasourceSelector": {
        "datasourceType": "Sql",
        "connectionDetails": {
          "server": "NewServer",
          "database": "NewDatabase"
        },
        "gatewayId": "gatewayId",
        "datasourceId": "datasourceId"
      }
    }
  ]
} 

回復:

{"error":{"code":"InvalidRequest","message":"Operation is not supported for selector # - connection details contains parameters"}}

方法二

調用 Power BI REST API

                        public static void UpdateServerName_RestAPI(string groupId, string datasetId)
                        {
                            var tokenCredentials = InitPowerBI_New();
                            HttpResponseMessage response;
                            try
                            {
                                var httpClient = new HttpClient();
                
                                // Add AccessToken in header
                                httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", tokenCredentials.Item2);
                
                                var url = $"https://api.powerbi.com/v1.0/myorg/groups/{groupId}/datasets/{datasetId}/Default.UpdateDatasources";
                
                                var form = prepareJsonForUpdateServerDetails();
                
                                var content = new StringContent(form, Encoding.UTF8, "application/json");
                
                                response = httpClient.PostAsync(url, content).Result;
                
                                response.EnsureSuccessStatusCode();
                                httpClient.Dispose();
                            }
                            catch (Exception)
                            {
                                
                            }
                        }

要求 :

{
   "UpdateDetails":[
      {
         "datasourceSelector":{
            "datasourceType":"Sql",
            "connectionDetails":{
               "server":"OldServer",
               "database":"OldDatabase"
            }
         },
         "connectionDetails":{
            "server":"NewServer",
            "database":"NewDatabase"
         }
      }
   ]
}

回復:

{"error":{"code":"InvalidRequest","message":"Operation is not supported for selector # - connection details contains parameters"}}

請幫忙。 謝謝你

當報表查詢使用參數連接到數據庫時,就會發生這種情況。 在這種情況下,您無法更新連接,而是更新參數或從查詢中刪除連接。

因此,如果您在查詢代碼中看到類似Sql.Database(#"ServerName",...您必須使用Client.Datasets.UpdateParameters並傳入詳細信息:

     UpdateMashupParameterDetails request = new()
                    {
                        Name = "ServerName",
                        NewValue = "newServerName"
                    };

對於數據庫也是如此。 更多詳情https://docs.microsoft.com/en-us/rest/api/power-bi/datasets/update-parameters

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM