EducationSoftwareStrategy.com
StrategyCommunity

Knowledge Base

Product

Community

Knowledge Base

TopicsBrowse ArticlesDeveloper Zone

Product

Download SoftwareProduct DocumentationSecurity Hub

Education

Tutorial VideosSolution GalleryEducation courses

Community

GuidelinesGrandmastersEvents
x_social-icon_white.svglinkedin_social-icon_white.svg
Strategy logoCommunity

© Strategy Inc. All Rights Reserved.

LegalTerms of UsePrivacy Policy
  1. Home
  2. Topics

KB485063: Troubleshooting the MicroStrategy Dynamics 365 connector in MicroStrategy


Community Admin

• Strategy


This article provides information for troubleshooting problems when using the Microsoft Dynamics 365 connector in MicroStrategy.

How to configure driver-level logging

By default, the driver looks for the file named

ddlogging.properties
in the current working directory to load for all connections for a data source. To enable logging, please add the 
LogConfigFile
connection property to the connection string. Specify the file name, and optionally, the path of the properties file used to initialize driver logging. The connection string will look similar to the following:
JDBC;DRIVER={com.Strategy.jdbc.dynamics365.Dynamics365Driver};URL={jdbc:Strategy:dynamics365:ServiceUrl=SERVICEURL;AuthenticationMethod=OAuth2;TokenUri=TOKENURI;ClientId=CLIENTID;ClientSecretCLIENTSECRET;RefreshToken=REFRESHTOKEN;LogConfigFile= ddlogging.properties};

If a properties file is specified for the
LogConfigFile
connection property, the driver uses the following process to determine which file to load.

  1. The driver looks for the file specified by the
    LogConfigFile
    property in the IntelligenceServer folder (/var/opt/MicroStrategy/IntelligenceServer)
  2. If the driver cannot find the file in step 1, it looks for the properties file named
    user_name.logging.properties
    in the directory containing the embedded database for the connection, where
    user_name
    is your user ID used to connect to the instance.
  3. If the driver cannot find the file in step 2, it looks for a properties file named
    ddlogging.properties
    in the current working directory. 
  4. If thee driver cannot find the file in step 3, it abandons its attempt to load a properties file. 


If any of these files exist, but the logging initialization fails for some reason while using that file, the driver writes a warning to the standard output (System.out), specifying the name of the properties file being used. 

ddlogging.properties 
can be modified using a text editor for your needs. Some detailed logging can be enabled by changing the .level parameter to FINEST:
.LEVEL= FINEST

High memory usage


The driver connects to Microsoft Dynamics API and creates SQL and schema. Since joins and SQL statements are executed on the driver side, the memory usage can be high.
When processing large sets of data, out-of-memory errors can occur when the size of an intermediate result exceeds the available memory allocated to the JVM. If you are encountering these errors, you can tune

FetchSize
and the JVM heap size to fit your environment.

  • Reduce
    FetchSize
    to reduce demands on memory. By lowering the number of rows as specified by
    FetchSize
    , you lower the number of rows the driver is required to process before returning data to the application. Thus, you reduce demands on memory and decrease the likelihood of out-of-memory errors.
    FetchSize
    connection string property specifies the maximum number of rows that the driver processes before returning data to the application when executing a Select. This value provides a suggestion to the driver as to the number of rows it should internally process before returning control to the application. The driver may fetch fewer rows to conserve memory when processing exceptionally wide rows.
    The valid values of
    FetchSize
    can be 0 and x, where x is a positive integer indicating the number of rows that should be processed.
    If set to 0, the driver processes all the rows of the result before returning control to the application. When large data sets are being processed, setting
    FetchSize
    to 0 can diminish performance and increase the likelihood of out-of-memory errors. If set to x, the driver limits the number of rows that may be processed for each fetch request before returning control to the application.
    The connection string after adding
    FetchSize
    property will look similar to the following:
    JDBC;DRIVER={com.Strategy.jdbc.dynamics365.Dynamics365Driver};URL={jdbc:Strategy:dynamics365:ServiceUrl=SERVICEURL;AuthenticationMethod=OAuth2;TokenUri=TOKENURI;ClientId=CLIENTID;ClientSecretCLIENTSECRET;RefreshToken=REFRESHTOKEN;FetchSize= x};

  • Increase the JVM heap size. By increasing the max Java heap size, you increase the amount of data the driver can accumulate in memory and avoid out-of-memory errors.

What performance can you expect?


Internal test results show that the Intelligent Cube containing over 237,000 rows published in 30 seconds. 


Comment

0 comments

Details

Knowledge Article

Published:

June 18, 2021

Last Updated:

November 15, 2023