Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Anonymous
Not applicable

SetAllDatasetConnections for Oracle and SQL server

Hi,

 

I have a direct query report that needs to be used by multiple clients. I've created workspaces per client and my application determines which workspace to access and fetches the report from there. However, when I launch the report, I need to make sure the report is pointing to the right data source. I do have the tnsname and database name I have to connect to but my report fails to update the datasetconnectionstring. 

 

Snippet

var connectionDetails = new ConnectionDetails()
                {
                    ConnectionString = connectionString
                };
                var powerBiClient = await _client.GetPowerBiClient();
                var dataset = await powerBiClient.Datasets.GetDatasetByIdInGroupAsync(groupId, datasetId);
                if (dataset.IsEffectiveIdentityRequired.Value && dataset.IsEffectiveIdentityRolesRequired.Value)
                {
                    var response = await powerBiClient.Datasets.SetAllDatasetConnectionsInGroupAsync(groupId, datasetId, connectionDetails);
                    LogHelper.LogInfo(string.Format("Dataset {0} in workspace {1} update with connection string {2}", datasetId, groupId, connectionString));
                    //await powerBiClient.Datasets.RefreshDatasetInGroupAsync(groupId, datasetId);
                }

The connectionstring is of the following format "data source= <tnsname>" for Oracle database and "Data Source=<serverName>; Initial Catalog=<databasename>;" for SQL server database.

reports using Oracle  give me an error on the report.

Reports using SQL Server run through fine but don't update the dataset until I manually refresh the dataset.

3 REPLIES 3
Eric_Zhang
Employee
Employee


@Anonymous wrote:

Hi,

 

I have a direct query report that needs to be used by multiple clients. I've created workspaces per client and my application determines which workspace to access and fetches the report from there. However, when I launch the report, I need to make sure the report is pointing to the right data source. I do have the tnsname and database name I have to connect to but my report fails to update the datasetconnectionstring. 

 

Snippet

var connectionDetails = new ConnectionDetails()
                {
                    ConnectionString = connectionString
                };
                var powerBiClient = await _client.GetPowerBiClient();
                var dataset = await powerBiClient.Datasets.GetDatasetByIdInGroupAsync(groupId, datasetId);
                if (dataset.IsEffectiveIdentityRequired.Value && dataset.IsEffectiveIdentityRolesRequired.Value)
                {
                    var response = await powerBiClient.Datasets.SetAllDatasetConnectionsInGroupAsync(groupId, datasetId, connectionDetails);
                    LogHelper.LogInfo(string.Format("Dataset {0} in workspace {1} update with connection string {2}", datasetId, groupId, connectionString));
                    //await powerBiClient.Datasets.RefreshDatasetInGroupAsync(groupId, datasetId);
                }

The connectionstring is of the following format "data source= <tnsname>" for Oracle database and "Data Source=<serverName>; Initial Catalog=<databasename>;" for SQL server database.

reports using Oracle  give me an error on the report.

Reports using SQL Server run through fine but don't update the dataset until I manually refresh the dataset.


@Anonymous

Per my test, a connection string as below actually works.

"data source=yourOracleServerName:1522/SERVICE_NAME;persist security info=True"
Anonymous
Not applicable

@Eric_Zhang What would your tnsnames.ora file look like locally???


@Anonymous wrote:

@Eric_Zhang What would your tnsnames.ora file look like locally???


# tnsnames.ora Network Configuration File: C:\app\userxxx\virtual\product\12.2.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

LISTENER_ORCL =
  (ADDRESS = (PROTOCOL = TCP)(HOST = myserver.xxxx.xxxx.xxxx.com)(PORT = 1522))


ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1522))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = myserver.xxxx.xxxx.xxxx.com)(PORT = 1522))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl.xxxxx.xxxx.xxxx.com)
    )
  )

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.