{"sourceDefinitionId": "b5ea17b1-f170-46dc-bc31-cc744ca984c1", "name": "Microsoft SQL Server (MSSQL)", "dockerRepository": "airbyte/source-mssql", "dockerImageTag": "4.3.5-preview.a1ea97e", "documentationUrl": "https://docs.airbyte.com/integrations/sources/mssql", "icon": "icon.svg", "iconUrl": "https://connectors.airbyte.com/files/metadata/airbyte/source-mssql/latest/icon.svg", "sourceType": "database", "spec": {"documentationUrl": "https://docs.airbyte.com/integrations/sources/mssql", "connectionSpecification": {"$schema": "http://json-schema.org/draft-07/schema#", "title": "MSSQL Source Spec", "type": "object", "additionalProperties": true, "properties": {"host": {"type": "string", "description": "The hostname of the database.", "title": "Host", "order": 0}, "port": {"type": "integer", "default": 1433, "description": "The port of the database.", "title": "Port", "order": 1, "minimum": 0, "maximum": 65536, "examples": ["1433"]}, "database": {"type": "string", "description": "The name of the database.", "title": "Database", "order": 2, "examples": ["master"]}, "username": {"type": "string", "description": "The username which is used to access the database.", "title": "Username", "order": 4}, "replication_method": {"oneOf": [{"title": "Scan Changes with User Defined Cursor", "type": "object", "additionalProperties": true, "description": "Incrementally detects new inserts and updates using the cursor column chosen when configuring a connection (e.g. created_at, updated_at).", "properties": {"method": {"type": "string", "enum": ["STANDARD"], "default": "STANDARD"}, "exclude_todays_data": {"type": "boolean", "default": false, "description": "When enabled incremental syncs using a cursor of a temporal type (date or datetime) will include cursor values only up until the previous midnight UTC", "title": "Exclude Today's Data", "order": 1, "always_show": true}}, "required": ["method"]}, {"title": "Read Changes using Change Data Capture (CDC)", "type": "object", "additionalProperties": true, "description": "Recommended - Incrementally reads new inserts, updates, and deletes using MSSQL's change data capture feature. This must be enabled on your database.", "properties": {"method": {"type": "string", "enum": ["CDC"], "default": "CDC"}, "initial_waiting_seconds": {"type": "integer", "description": "The amount of time the connector will wait when it launches to determine if there is new data to sync or not. Defaults to 300 seconds. Valid range: 120 seconds to 3600 seconds. Read about initial waiting time", "title": "Initial Waiting Time in Seconds (Advanced)", "order": 1, "always_show": true}, "invalid_cdc_cursor_position_behavior": {"type": "string", "default": "Fail sync", "description": "Determines whether Airbyte should fail or re-sync data in case of an stale/invalid cursor value in the mined logs. If 'Fail sync' is chosen, a user will have to manually reset the connection before being able to continue syncing data. If 'Re-sync data' is chosen, Airbyte will automatically trigger a refresh but could lead to higher cloud costs and data loss.", "title": "Invalid CDC Position Behavior (Advanced)", "order": 2, "always_show": true, "enum": ["Fail sync", "Re-sync data"]}, "initial_load_timeout_hours": {"type": "integer", "default": 8, "description": "The amount of time an initial load is allowed to continue for before catching up on CDC logs.", "title": "Initial Load Timeout in Hours (Advanced)", "order": 3, "max": 24, "min": 4, "always_show": true}, "poll_interval_ms": {"type": "integer", "default": 500, "description": "How often (in milliseconds) Debezium should poll for new data. Must be smaller than heartbeat interval (15000ms). Lower values provide more responsive data capture but may increase database load.", "title": "Poll Interval in Milliseconds (Advanced)", "order": 4, "max": 14999, "min": 100, "always_show": true}}, "required": ["method"]}], "description": "Configures how data is extracted from the database.", "title": "Update Method", "order": 10, "display_type": "radio", "type": "object"}, "additionalProperties": {"type": "object", "additionalProperties": {"type": "object", "additionalProperties": true, "properties": {}}}, "schemas": {"type": "array", "items": {"type": "string"}, "description": "The list of schemas to sync from. If not specified, all schemas will be discovered. Case sensitive.", "title": "Schemas", "order": 3, "minItems": 0, "uniqueItems": true}, "password": {"type": "string", "description": "The password associated with the username.", "title": "Password", "order": 5, "airbyte_secret": true}, "jdbc_url_params": {"type": "string", "description": "Additional properties to pass to the JDBC URL string when connecting to the database formatted as 'key=value' pairs separated by the symbol '&'. (example: key1=value1&key2=value2&key3=value3).", "title": "JDBC URL Params", "order": 6}, "checkpoint_target_interval_seconds": {"type": "integer", "default": 300, "description": "How often (in seconds) a stream should checkpoint, when possible.", "title": "Checkpoint Target Time Interval", "order": 11}, "concurrency": {"type": "integer", "description": "Maximum number of concurrent queries to the database.", "title": "Concurrency", "order": 12}, "check_privileges": {"type": "boolean", "default": true, "description": "When this feature is enabled, during schema discovery the connector will query each table or view individually to check access privileges and inaccessible tables, views, or columns therein will be removed. In large schemas, this might cause schema discovery to take too long, in which case it might be advisable to disable this feature.", "title": "Check Table and Column Access Privileges", "order": 13}, "authentication": {"oneOf": [{"title": "SQL Password", "type": "object", "additionalProperties": true, "description": "Authenticate using a SQL Server username and password.", "properties": {"auth_method": {"type": "string", "enum": ["sql_password"], "default": "sql_password"}, "username": {"type": "string", "description": "The username which is used to access the database.", "title": "Username", "order": 0}, "password": {"type": "string", "description": "The password associated with the username.", "title": "Password", "order": 1, "airbyte_secret": true}}, "required": ["auth_method", "username", "password"]}, {"title": "Active Directory Service Principal", "type": "object", "additionalProperties": true, "description": "Authenticate using a Microsoft Entra ID (Azure Active Directory) service principal. This is recommended for Azure SQL Database and Azure Synapse Analytics.", "properties": {"auth_method": {"type": "string", "enum": ["active_directory_service_principal"], "default": "active_directory_service_principal"}, "tenant_id": {"type": "string", "description": "The Microsoft Entra ID (Azure AD) tenant ID.", "title": "Tenant ID", "order": 0}, "client_id": {"type": "string", "description": "The client (application) ID of the service principal.", "title": "Client ID", "order": 1}, "client_secret": {"type": "string", "description": "The client secret of the service principal.", "title": "Client Secret", "order": 2, "airbyte_secret": true}}, "required": ["auth_method", "tenant_id", "client_id", "client_secret"]}], "description": "The authentication method to use when connecting to the database. Default is SQL Password. For Azure SQL, you can also use Active Directory Service Principal.", "title": "Authentication Method", "order": 4, "display_type": "radio", "type": "object"}, "ssl_mode": {"oneOf": [{"title": "Unencrypted", "type": "object", "additionalProperties": true, "description": "Data transfer will not be encrypted.", "properties": {"mode": {"type": "string", "enum": ["unencrypted"], "default": "unencrypted"}}, "required": ["mode"]}, {"title": "Encrypted (trust server certificate)", "type": "object", "additionalProperties": true, "description": "Use the certificate provided by the server without verification. (For testing purposes only!)", "properties": {"mode": {"type": "string", "enum": ["encrypted_trust_server_certificate"], "default": "encrypted_trust_server_certificate"}}, "required": ["mode"]}, {"title": "Encrypted (verify certificate)", "type": "object", "additionalProperties": true, "description": "Verify and use the certificate provided by the server.", "properties": {"mode": {"type": "string", "enum": ["encrypted_verify_certificate"], "default": "encrypted_verify_certificate"}, "hostNameInCertificate": {"type": "string", "description": "Specifies the host name of the server. The value of this property must match the subject property of the certificate.", "title": "Host Name In Certificate", "order": 0}, "certificate": {"type": "string", "description": "certificate of the server, or of the CA that signed the server certificate", "title": "Certificate", "order": 1, "airbyte_secret": true, "multiline": true}}, "required": ["mode"]}], "description": "The encryption method which is used when communicating with the database.", "title": "Encryption", "order": 8, "default": "required", "type": "object"}, "tunnel_method": {"oneOf": [{"title": "No Tunnel", "type": "object", "additionalProperties": true, "description": "No ssh tunnel needed to connect to database", "properties": {"tunnel_method": {"type": "string", "enum": ["NO_TUNNEL"], "default": "NO_TUNNEL"}}, "required": ["tunnel_method"]}, {"title": "SSH Key Authentication", "type": "object", "additionalProperties": true, "description": "Connect through a jump server tunnel host using username and ssh key", "properties": {"tunnel_method": {"type": "string", "enum": ["SSH_KEY_AUTH"], "default": "SSH_KEY_AUTH"}, "tunnel_host": {"type": "string", "description": "Hostname of the jump server host that allows inbound ssh tunnel.", "title": "SSH Tunnel Jump Server Host", "order": 1}, "tunnel_port": {"type": "integer", "default": 22, "description": "Port on the proxy/jump server that accepts inbound ssh connections.", "title": "SSH Connection Port", "order": 2, "minimum": 0, "maximum": 65536}, "tunnel_user": {"type": "string", "description": "OS-level username for logging into the jump server host", "title": "SSH Login Username", "order": 3}, "ssh_key": {"type": "string", "description": "OS-level user account ssh key credentials in RSA PEM format ( created with ssh-keygen -t rsa -m PEM -f myuser_rsa )", "title": "SSH Private Key", "order": 4, "multiline": true, "airbyte_secret": true}}, "required": ["tunnel_method", "tunnel_host", "tunnel_port", "tunnel_user", "ssh_key"]}, {"title": "Password Authentication", "type": "object", "additionalProperties": true, "description": "Connect through a jump server tunnel host using username and password authentication", "properties": {"tunnel_method": {"type": "string", "enum": ["SSH_PASSWORD_AUTH"], "default": "SSH_PASSWORD_AUTH"}, "tunnel_host": {"type": "string", "description": "Hostname of the jump server host that allows inbound ssh tunnel.", "title": "SSH Tunnel Jump Server Host", "order": 1}, "tunnel_port": {"type": "integer", "default": 22, "description": "Port on the proxy/jump server that accepts inbound ssh connections.", "title": "SSH Connection Port", "order": 2, "minimum": 0, "maximum": 65536}, "tunnel_user": {"type": "string", "description": "OS-level username for logging into the jump server host", "title": "SSH Login Username", "order": 3}, "tunnel_user_password": {"type": "string", "description": "OS-level password for logging into the jump server host", "title": "Password", "order": 4, "airbyte_secret": true}}, "required": ["tunnel_method", "tunnel_host", "tunnel_port", "tunnel_user", "tunnel_user_password"]}], "description": "Whether to initiate an SSH tunnel before connecting to the database, and if so, which kind of authentication to use.", "title": "SSH Tunnel Method", "order": 9, "type": "object"}}, "required": ["host", "port", "database", "replication_method", "additionalProperties", "authentication"]}, "supportsNormalization": false, "supportsDBT": false, "supported_destination_sync_modes": []}, "tombstone": false, "public": true, "custom": false, "releaseStage": "alpha", "supportLevel": "certified", "allowedHosts": {"hosts": ["${host}", "${tunnel_method.tunnel_host}"]}, "maxSecondsBetweenMessages": 7200, "releases": {"breakingChanges": {"2.0.0": {"upgradeDeadline": "2023-08-23", "message": "Add default cursor for cdc", "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/mssql-migrations#2.0.0"}, "3.0.0": {"upgradeDeadline": "2023-12-07", "message": "Remapped columns of types: date, datetime, datetime2, datetimeoffset, smalldatetime, and time from `String` to their appropriate Airbyte types. Customers whose streams have columns with the affected data types must take action with their connections.", "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/mssql-migrations#3.0.0"}, "4.0.0": {"upgradeDeadline": "2024-04-07", "message": "We have overhauled our MSSQL source connector and it is now supported by the Airbyte team! To benefit from new features, including terabyte-sized table support, reliability improvements, expanded datetime data types, and various bug fixes, please opt in to the 4.0.0 version.", "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/mssql-migrations#4.0.0"}}, "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/mssql-migrations"}, "ab_internal": {"sl": 100, "ql": 200, "isEnterprise": false, "requireVersionIncrementsInPullRequests": true}, "generated": {"git": {"commit_sha": "bda647c2b2ff49040809725b6e803b6fd55b1d43", "commit_timestamp": "2026-03-16T23:18:04+00:00", "commit_author": "Devin AI", "commit_author_email": "158243242+devin-ai-integration[bot]@users.noreply.github.com"}, "source_file_info": {"metadata_file_path": "metadata/airbyte/source-mssql/4.3.5-preview.a1ea97e/metadata.yaml", "metadata_bucket_name": "prod-airbyte-cloud-connector-metadata-service", "metadata_last_modified": "2026-03-17T11:52:16.429000+00:00", "registry_entry_generated_at": "2026-03-17T11:53:24.553931"}, "sbomUrl": "https://connectors.airbyte.com/files/sbom/airbyte/source-mssql/4.3.5-preview.a1ea97e.spdx.json"}, "packageInfo": {}, "language": "java", "supportsFileTransfer": false, "supportsDataActivation": false, "license": "ELv2", "connectorTestSuitesOptions": [{"suite": "unitTests"}, {"suite": "integrationTests"}, {"suite": "acceptanceTests"}], "connectorIPCOptions": {"dataChannel": {"supportedSerialization": ["JSONL", "PROTOBUF"], "supportedTransport": ["SOCKET", "STDIO"], "version": "0.0.2"}}, "externalDocumentationUrls": [{"title": "SQL Server documentation", "type": "api_reference", "url": "https://learn.microsoft.com/en-us/sql/sql-server/"}, {"title": "SQL Server 2022 release notes", "type": "api_release_history", "url": "https://learn.microsoft.com/en-us/sql/sql-server/sql-server-2022-release-notes"}, {"title": "SQL Server authentication", "type": "authentication_guide", "url": "https://learn.microsoft.com/en-us/sql/relational-databases/security/choose-an-authentication-mode"}], "githubIssueLabel": "source-mssql", "connectorBuildOptions": {"baseImage": "docker.io/airbyte/java-connector-base:2.0.1@sha256:ec89bd1a89e825514dd2fc8730ba299a3ae1544580a078df0e35c5202c2085b3"}, "tags": ["language:java"]}