Dear visitor, despite the COVID-19 outbreak, our team continues operating at full speed.

Also, here is the form where you can apply for a special discount and we will contact you with possible options. Stay safe and continue achieving your business goals.

Fill the form
Get Free Trial
Get Free Trial
  1. API reference
  2. Welcome
    1. Component overview
    2. Quick start
    3. System requirements
    4. Troubleshooting
    5. Managing license keys
    6. Migrating from WebDataRocks to Flexmonster
  3. Connecting to Data Source
    1. JSON
      1. Connecting to JSON
      2. Connecting to JSON using the custom data source API
      3. Data types in JSON
    2. CSV
      1. Connecting to CSV
      2. Connecting to CSV using the custom data source API
      3. Data types in CSV
    3. Database
      1. Connecting to SQL databases
      2. Connecting to a MySQL database
      3. Connecting to a Microsoft SQL Server database
      4. Connecting to a PostgreSQL database
      5. Connecting to an Oracle database
      6. Connecting to other databases
    4. MongoDB
      1. Introduction to the Flexmonster MongoDB Connector
      2. Getting started with the MongoDB Connector
      3. Embedding the MongoDB Connector into the server
    5. Microsoft Analysis Services
      1. Connecting to Microsoft Analysis Services
      2. Getting started with the Accelerator
      3. Installing the Accelerator as a Windows service
      4. Referring the Accelerator as a DLL
      5. Configuring the authentication process
      6. Configuring a secure HTTPS connection
      7. Troubleshooting
    6. Pentaho Mondrian
      1. Connecting to Pentaho Mondrian
      2. Getting started with the Accelerator
      3. Configuring Mondrian roles
      4. Configuring username/password protection
      5. Configuring a secure HTTPS connection
      6. Troubleshooting
    7. Elasticsearch
      1. Connecting to Elasticsearch
      2. Configuring the mapping
    8. Custom data source API
      1. Introduction to the custom data source API
      2. A quick overview of a sample Node.js server
      3. A quick overview of a sample .NET Core server
      4. Implementing the custom data source API server
      5. Implementing filters
      6. Returning data for the drill-through view
      7. Supporting more aggregation functions
  4. Security
    1. Security in Flexmonster
    2. Security aspects of connecting to an OLAP cube
      1. Ways of connecting to an OLAP cube
      2. The data transfer process
      3. Data security
      4. Data access management
  5. Configuring report
    1. What is a report
    2. Data source
    3. Slice
    4. Options
    5. Mapping
    6. Number formatting
    7. Conditional formatting
    8. Set the report for the component
    9. Get the report from the component
    10. Date and time formatting
    11. Configuring global options
    12. Export and print
    13. Calculated values
    14. Custom sorting
  6. Integration with frameworks
    1. Available tutorials
    2. Integration with AngularJS (v1.x)
    3. Integration with Angular
    4. Integration with React
    5. Integration with React Native
    6. Integration with Vue
    7. Integration with Python
      1. Integration with Django
      2. Integration with Jupyter Notebook
    8. Integration with R Shiny
    9. Integration with Webpack
    10. Integration with ASP.NET
    11. Integration with jQuery
    12. Integration with JSP
    13. Integration with TypeScript
    14. Integration with RequireJS
    15. Integration with PhoneGap
  7. Integration with charts
    1. Integration with Highcharts
    2. Integration with Google Charts
    3. Integration with FusionCharts
    4. Integration with any charting library
  8. Customizing
    1. Customizing the Toolbar
    2. Customizing appearance
    3. Customizing the context menu
    4. Localizing the component
  9. Updating to the latest version
    1. Updating to the latest version
    2. Release notes
    3. Migration guide from 2.7 to 2.8
    4. Migration guide from 2.6 to 2.7
    5. Migration guide from 2.5 to 2.6
    6. Migration guide from 2.4 to 2.5
    7. Migration guide from 2.3 to 2.4
    8. Migration guide from 2.2 to 2.3
    9. Documentation for older versions
Table of contents

Connecting to a Microsoft SQL Server database using the custom data source API

This tutorial describes how to connect to a Microsoft SQL Server database with the sample .NET Core server implementing the custom data source API.


To run the sample server, you will need .NET Core. Get it here if it’s not already installed on your machine.

Note that you need at least .NET Core 3.0. To check which versions of .NET Core are installed on your computer, run the following commands in the console:

dotnet --list-sdks
dotnet --list-runtimes

Step 1. Download the sample project

Download the .zip archive with the sample project or clone it from GitHub with the following command:

git clone my-proj 
cd my-proj

Step 2. Configure the data source name

By default, the server uses the data stored in JSON format. To make the server use data from a database, the "DataSourceName" configuration in server-dotnetcore/appsettings.json should be the following:

"DataSource": {
"DataSourceName": "database",


Step 3. Configure the database type

Specify the type of database you want to use by adding the "DatabaseType" configuration to the server-dotnetcore/appsettings.json file. In this case, the configuration’s value should be "mssql":

"DataSource": {
"DataSourceName": "database",
"DatabaseType": "mssql",


Step 4. Configure the connection with the database

To enable the server to fetch data from your database, you have to provide the connection string to the database. The connection string should be added to server-dotnetcore/appsettings.jsonas follows:

"DataSource": {
"DataSourceName": "database",
   "DatabaseType": "mssql",
   "ConnectionStrings": {
    "DefaultConnection": "server=yourserver;Database=database_name;user=username;password=password"

Step 5. Define the data subset

In the server-dotnetcore/appsettings.json file, create an index for the subset of data you want Flexmonster to visualize. It should be done as follows:

"DataSource": {
    "DataSourceName": "database",
   "DatabaseType": "mssql",
   "ConnectionStrings": {
       "DefaultConnection": "server=yourserver;Database=database_name;user=username;password=password"
    "Indexes": {
       "your-index": "SELECT * FROM yourTableName"

In this key:value pair, key is your index’s name, and value is a query for the data. You can choose any name for your index.

As soon as you start the sample .NET Core server, it automatically executes the query specified in the "Indexes" property and preloads the received data. Thus, when Flexmonster requests for the data, the server responds with the already preloaded data.

Note: the preloaded data is kept in the server’s RAM, so the number of indexes you can specify is limited by the amount of RAM available to the server.

Step 6. (optional) Set the data refresh time

By default, data from a database is reloaded every 60 minutes. You can change the refresh time in the "DataRefreshTime" configuration in server-dotnetcore/appsettings.json. For example:

"DataStorageOptions": { 
"DataRefreshTime": "1800000"

Now the data will be reloaded every 30 minutes.

Note that refresh time is set in milliseconds.

Step 7. Configure the report

On the client side (see client/index.html), the report should be configured as follows:

new Flexmonster({
   container: "#pivot",
   report: {
       dataSource: {
           type: "api",
           url: "http://localhost:3400/api/cube",
           index: "your-index"

Note 1: index must match the name of the index defined in step 5 (e.g. "your-index").

Note 2: when Flexmonster requests for the data, the sample .NET Core server sends the response and then caches it. In case the component sends the same request once again, the server responds with the data from its cache. The cache is cleared only when the server is restarted, though the cache has a memory limit: when the limit is reached, and the new response can’t be cached, the .NET Core server deletes one of the previously cached responses from the cache.

Step 8. Run the server

To start the .NET Core server, run the following commands in a console:

cd server-dotnetcore
dotnet restore
dotnet run

What’s next?

You may be interested in the following articles: