# Microsoft SQL Server For context on getting started with ingestion, check out our [metadata ingestion guide](../README.md). ## Setup To install this plugin, run `pip install 'acryl-datahub[mssql]'`. We have two options for the underlying library used to connect to SQL Server: (1) [python-tds](https://github.com/denisenkom/pytds) and (2) [pyodbc](https://github.com/mkleehammer/pyodbc). The TDS library is pure Python and hence easier to install, but only PyODBC supports encrypted connections. ## Capabilities This plugin extracts the following: - Metadata for databases, schemas, views and tables - Column types associated with each table/view - Table, row, and column statistics via optional [SQL profiling](./sql_profiles.md) | Capability | Status | Details | |-------------------|--------|------------------------------------------| | Platform Instance | ✔️ | [link](../../docs/platform-instances.md) | | Data Containers | ✔️ | | | Data Domains | ✔️ | [link](../../docs/domains.md) | ## Quickstart recipe Check out the following recipe to get started with ingestion! See [below](#config-details) for full configuration options. For general pointers on writing and running a recipe, see our [main recipe guide](../README.md#recipes). ```yml source: type: mssql config: # Coordinates host_port: localhost:1433 database: DemoDatabase # Credentials username: user password: pass sink: # sink configs ```
Example: using ingestion with ODBC and encryption This requires you to have already installed the Microsoft ODBC Driver for SQL Server. See https://docs.microsoft.com/en-us/sql/connect/python/pyodbc/step-1-configure-development-environment-for-pyodbc-python-development?view=sql-server-ver15 ```yml source: type: mssql config: # Coordinates host_port: localhost:1433 database: DemoDatabase # Credentials username: admin password: password # Options use_odbc: "True" uri_args: driver: "ODBC Driver 17 for SQL Server" Encrypt: "yes" TrustServerCertificate: "Yes" ssl: "True" sink: # sink configs ```
## Config details Note that a `.` is used to denote nested fields in the YAML recipe. As a SQL-based service, the Athena integration is also supported by our SQL profiler. See [here](./sql_profiles.md) for more details on configuration. | Field | Required | Default | Description | |--------------------------------|----------|--------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `username` | | | MSSQL username. | | `password` | | | MSSQL password. | | `host_port` | | `"localhost:1433"` | MSSQL host URL. | | `database` | | | MSSQL database. | | `database_alias` | | | Alias to apply to database when ingesting. | | `use_odbc` | | `False` | See https://docs.sqlalchemy.org/en/14/dialects/mssql.html#module-sqlalchemy.dialects.mssql.pyodbc. | | `uri_args.` | | | Arguments to URL-encode when connecting. See https://docs.microsoft.com/en-us/sql/connect/odbc/dsn-connection-string-attribute?view=sql-server-ver15. | | `env` | | `"PROD"` | Environment to use in namespace when constructing URNs. | | `platform_instance` | | None | The Platform instance to use while constructing URNs. | | `options.