Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Scroll ignore
scroll-viewporttrue
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-htmltrue
scroll-epubtrue

Open in new tab

About Collectors

Insert excerpt
Collector Method
Collector Method
nameabout

...

Collector server minimum requirements

Insert excerpt
Collector Method
Collector Method
nameCollectorServerSpec
nopaneltrue

SQL Server Azure Synapse Requirements

Setting up SQL Server Azure Synapse for metadata extraction is a 2 step processusing a service principal (Application).

Step 1: Establish SQLServer Azure Synapse Access

Note

Apply in MASTER using an Azure SQL Synapse Admin user

Code Block
CREATE LOGIN kadauser WITH password='PASSWORD';
CREATE USER kadauser[<SERVICE_PRINCIPAL_NAME>] FROM LOGINEXTERNAL kadauserPROVIDER; 
Note

Apply per database in scope for metadata collection.

Code Block
CREATE USER kadauser[<SERVICE_PRINCIPAL_NAME>] FROM LOGINEXTERNAL kadauserPROVIDER;
GRANT VIEW DEFINITION TO kadauser[<SERVICE_PRINCIPAL_NAME>];
GRANT VIEW DATABASE STATE to kadauser;
GRANT CONTROL to kadauser;  -- required for extended events sys.fn_xe_file_target_read_fileTO [<SERVICE_PRINCIPAL_NAME>];

The following table should also be available to SELECT by the user created in each database

...

You can download the Latest Core Library and Azure SQL Synapse whl via Platform Settings → SourcesDownload Collectors

...

Code Block
pip install kada_collectors_extractors_sqlserverazure_azuresynapse-x3.x0.x0-py3-none-any.whl

You will also need to install the corresponding common library kada_collectors_lib-x.x.x for this collector to function properly.

...

The collector requires a set of parameters to connect to and extract metadata from SQLServer Azure Synapse.

FIELD

FIELD TYPE

DESCRIPTION

EXAMPLE

client

string

Onboarded client in Azure to access Azure Synapse

 

secret

string

Onboarded client secret in Azure to access Azure Synapse

 

tenant

string

Tenant ID of where Azure Synapse exists

server

string

SQLServer Azure Synapse server.

If using a custom port append with comma Example: mydatabase“<workspace-name>.databasesql.windowsazuresynapse.net,56781433”“mydatabase

“<workspace-name>.databasesql.windowsazuresynapse.net”net,1433”

host

string

The onboarded host value in K, generally this would be the same as the server value, depending on what you onboard it as.

mydatabase.database.windows.net

username

string

Username to log into the SQLServer Azure account

“myuser”

password

string

Password to log into the SQLServer Azure account

 

“<workspace-name>.sql.azuresynapse.net,1433”

databases

list<string>

A list of databases to extract from SQLServer Azure

[“dwh”, “adw”]

driver

string

This is the ODBC driver, generally its ODBC Driver 17 for SQL Server, if you another driver installed please use that instead.

“ODBC Driver 17 for SQL Server”

meta_only

boolean

Do you want to extract metadata only without enabling extended events? We currently only support true

true

output_path

string

Absolute path to the output location where files are to be written

“/tmp/output”

mask

boolean

To enable masking or not

true

compress

boolean

To gzip the output or not

true

eventsconnection_nametimeout

string

The created extended event session name for each database, the event name should be exactly the same per database. This needs to be specified when meta_only is false

KADAinteger

Timeout in seconds allowed against Synapse Sql Pool connection, this is defaulted as 30

30

These parameters can be added directly into the run or you can use pass the parameters in via a JSON file. The following is an example you can use that is included in the example run code below.

kada_sqlserverazure_azuresynapse_extractor_config.json

Code Block
languagejson
{
    "client": "",
    "serversecret": "",
    "usernametenant": "",
    "passwordserver": "",
    "databaseshost": [""],
    "driver": "ODBC Driver 17 for SQL Server",
    "databases": [""],
    "output_path": "/tmp/output",
    "mask": true,
    "compress": true,
    "meta_only": true,
    "host": "",
    "events_nameconnection_timeout": "KADA"30
}

...

Step 5: Run the Collector

...

This code sample uses the kada_sqlserverazure_azuresynapse_extractor.py for handling the configuration details

Code Block
languagepy
import os
import argparse
from kada_collectors.extractors.utils import load_config, get_hwm, publish_hwm, get_generic_logger
from kada_collectors.extractors.sqlserverazure_azuresynapse import Extractor

get_generic_logger('root')  # Set to use the root logger, you can change the context accordingly or define your own logger

_type = 'sqlserverazure_azuresynapse'
dirname = os.path.dirname(__file__)
filename = os.path.join(dirname, 'kada_{}_extractor_config.json'.format(_type))

parser = argparse.ArgumentParser(description='KADA SqlServerAzure AzureSynapse Extractor.')
parser.add_argument('--config', '-c', dest='config', default=filename, help='Location of the configuration json, default is the config json in the same directory as the script.')
parser.add_argument('--name', '-n', dest='name', default=_type, help='Name of the collector instance.')
args = parser.parse_args()

start_hwm, end_hwm = get_hwm(args.name)

ext = Extractor(**load_config(args.config))
ext.test_connection()
ext.run(**{"start_hwm": start_hwm, "end_hwm": end_hwm})

publish_hwm(_typeargs.name, end_hwm)

Note

In some scenarios, you may receive an error message about the SSL settings.

This error can be resolved via the Open SSL settings. Refer to: https://github.com/mkleehammer/pyodbc/issues/610#issuecomment-534920201

  • Code Block
    Edited /etc/ssl/openssl.cnf 
    
    # Change or add
    
    MinProtocol = TLSv1.0
    
    CipherString = DEFAULT@SECLEVEL=1

...

Code Block
languagepy
class Extractor(usernameclient: str = None, passwordsecret: str = None, servertenant: str = None, \
    driverserver: str = None, host: str = None, events_pathdriver: str = None, databases: list = [], \
   
sqlserver_version: str = None, output_path: str = './output', mask: bool = False, compress: bool = False, \
    compressmeta_only: bool = False, eventsconnection_nametimeout: strint = None30) -> None

...

client: The Client ID for the registered application for access to Azure Synapse
secret: The Secret for the registered application for access to Azure Synapse
tenant: The Tenant ID for the registered application for access to Azure Synapse
server: Azure Synapse server
host: the onboarded host value in K, generally it will be the same as the server
driver: sqlserver driver name
databases: list of databases to extract
output_path: full or relative path to where the outputs should go
mask: To mask the META/DATABASE_LOG files or not
compress: To gzip output files or not
meta_only: To extract without extended events enabledor not
eventsconnection_name: Extended events session nametimeout: Synapse SQL Pool timeout for the connection in seconds

...

Step 6: Check the Collector Outputs

...

A high water mark file is created in the same directory as the execution called sqlserverazure_azuresynapse_hwm.txt and produce files according to the configuration JSON. This file is only produced if you call the publish_hwm method.

...