{
  "ab_internal": {
    "isEnterprise": false,
    "ql": 200,
    "requireVersionIncrementsInPullRequests": true,
    "sl": 100
  },
  "allowedHosts": {
    "hosts": [
      "${host}",
      "${tunnel_method.tunnel_host}"
    ]
  },
  "connectorBuildOptions": {
    "baseImage": "docker.io/airbyte/java-connector-base:2.0.1@sha256:ec89bd1a89e825514dd2fc8730ba299a3ae1544580a078df0e35c5202c2085b3"
  },
  "connectorIPCOptions": {
    "dataChannel": {
      "supportedSerialization": [
        "JSONL",
        "PROTOBUF"
      ],
      "supportedTransport": [
        "SOCKET",
        "STDIO"
      ],
      "version": "0.0.2"
    }
  },
  "connectorTestSuitesOptions": [
    {
      "suite": "unitTests"
    },
    {
      "suite": "integrationTests"
    },
    {
      "suite": "acceptanceTests"
    }
  ],
  "custom": false,
  "dockerImageTag": "5.0.1-preview.f3b88da",
  "dockerRepository": "airbyte/source-mssql",
  "documentationUrl": "https://docs.airbyte.com/integrations/sources/mssql",
  "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"
    }
  ],
  "generated": {
    "git": {
      "commit_author": "Yarden Carmeli",
      "commit_author_email": "yardencarmeli@gmail.com",
      "commit_sha": "f3b88daff4faa3db7b7e7975dc465f00dfe92604",
      "commit_timestamp": "2026-08-13T19:35:47+03:00"
    },
    "sbomUrl": "https://connectors.airbyte.com/files/sbom/airbyte/source-mssql/5.0.1-preview.f3b88da.spdx.json",
    "source_file_info": {
      "metadata_bucket_name": "prod-airbyte-cloud-connector-metadata-service",
      "metadata_file_path": "metadata/airbyte/source-mssql/5.0.1-preview.f3b88da/metadata.yaml",
      "metadata_last_modified": "2026-08-13T16:45:43.049048+00:00",
      "registry_entry_generated_at": "2026-08-13T16:45:43.049048+00:00"
    }
  },
  "githubIssueLabel": "source-mssql",
  "icon": "icon.svg",
  "iconUrl": "https://connectors.airbyte.com/files/metadata/airbyte/source-mssql/latest/icon.svg",
  "language": "java",
  "license": "ELv2",
  "maxSecondsBetweenMessages": 7200,
  "name": "Microsoft SQL Server (MSSQL)",
  "packageInfo": {},
  "public": true,
  "releaseStage": "alpha",
  "releases": {
    "breakingChanges": {
      "2.0.0": {
        "message": "Add default cursor for cdc",
        "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/mssql-migrations#2.0.0",
        "upgradeDeadline": "2023-08-23"
      },
      "3.0.0": {
        "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",
        "upgradeDeadline": "2023-12-07"
      },
      "4.0.0": {
        "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",
        "upgradeDeadline": "2024-04-07"
      },
      "5.0.0": {
        "deadlineAction": "auto_upgrade",
        "message": "NUMERIC and DECIMAL columns with scale 0 are now mapped to the Airbyte `integer` type instead of `number`, so downstream destinations preserve integral semantics (e.g. Snowflake NUMBER vs FLOAT). Customers whose streams contain at least one NUMERIC or DECIMAL column with scale 0 must take action with their connections by refreshing the source schema and refreshing the affected streams. To determine whether you are affected before upgrading, check the connector logs while running version 4.4.12 (or any later 4.4.x) for a discovery line such as 'Discovered DECIMAL column with scale 0 (precision=10). A future connector version will map such columns to Airbyte integer instead of number.' \u2014 one such line is logged per affected column at discovery/schema-refresh time. If no such line appears in your logs, your streams contain no affected columns and the upgrade requires no action.",
        "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/mssql-migrations#5.0.0",
        "upgradeDeadline": "2026-08-24"
      }
    },
    "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/mssql-migrations",
    "rolloutConfiguration": {
      "advanceDelayMinutes": 10,
      "autopilotConfig": {
        "autoPromoteStages": true,
        "autoStart": true,
        "strategy": "slow"
      },
      "defaultRolloutMode": "autopilot",
      "enableProgressiveRollout": false,
      "initialPercentage": 0,
      "maxPercentage": 50
    }
  },
  "sourceDefinitionId": "b5ea17b1-f170-46dc-bc31-cc744ca984c1",
  "sourceType": "database",
  "spec": {
    "connectionSpecification": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": true,
      "groups": [
        {
          "id": "db"
        },
        {
          "id": "auth"
        },
        {
          "id": "entra_id",
          "title": "Microsoft Entra ID"
        }
      ],
      "properties": {
        "additionalProperties": {
          "additionalProperties": {
            "additionalProperties": true,
            "properties": {},
            "type": "object"
          },
          "type": "object"
        },
        "check_privileges": {
          "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.",
          "order": 15,
          "title": "Check Table and Column Access Privileges",
          "type": "boolean"
        },
        "checkpoint_target_interval_seconds": {
          "default": 300,
          "description": "How often (in seconds) a stream should checkpoint, when possible.",
          "order": 13,
          "title": "Checkpoint Target Time Interval",
          "type": "integer"
        },
        "client_id": {
          "description": "Application (client) ID of a Microsoft Entra ID service principal. When provided together with Client Secret, Entra ID authentication is used instead of username and password.",
          "group": "entra_id",
          "order": 7,
          "title": "Entra ID Client ID",
          "type": "string"
        },
        "client_secret": {
          "airbyte_secret": true,
          "description": "Client secret for the Microsoft Entra ID service principal. When provided together with Client ID, Entra ID authentication is used instead of username and password.",
          "group": "entra_id",
          "order": 8,
          "title": "Entra ID Client Secret",
          "type": "string"
        },
        "concurrency": {
          "description": "Maximum number of concurrent queries to the database.",
          "order": 14,
          "title": "Concurrency",
          "type": "integer"
        },
        "database": {
          "description": "The name of the database.",
          "examples": [
            "master"
          ],
          "group": "db",
          "order": 2,
          "title": "Database",
          "type": "string"
        },
        "host": {
          "description": "The hostname of the database.",
          "group": "db",
          "order": 0,
          "title": "Host",
          "type": "string"
        },
        "jdbc_url_params": {
          "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).",
          "order": 6,
          "title": "JDBC URL Params",
          "type": "string"
        },
        "password": {
          "airbyte_secret": true,
          "always_show": true,
          "description": "The password associated with the username. Not required if Microsoft Entra ID authentication is configured below.",
          "group": "auth",
          "order": 5,
          "title": "Password",
          "type": "string"
        },
        "port": {
          "default": 1433,
          "description": "The port of the database.",
          "examples": [
            "1433"
          ],
          "group": "db",
          "maximum": 65536,
          "minimum": 0,
          "order": 1,
          "title": "Port",
          "type": "integer"
        },
        "replication_method": {
          "description": "Configures how data is extracted from the database.",
          "display_type": "radio",
          "oneOf": [
            {
              "additionalProperties": true,
              "description": "Incrementally detects new inserts and updates using the <a href=\"https://docs.airbyte.com/understanding-airbyte/connections/incremental-append/#user-defined-cursor\">cursor column</a> chosen when configuring a connection (e.g. created_at, updated_at).",
              "properties": {
                "exclude_todays_data": {
                  "always_show": true,
                  "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",
                  "order": 1,
                  "title": "Exclude Today's Data",
                  "type": "boolean"
                },
                "method": {
                  "default": "STANDARD",
                  "enum": [
                    "STANDARD"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "method"
              ],
              "title": "Scan Changes with User Defined Cursor",
              "type": "object"
            },
            {
              "additionalProperties": true,
              "description": "<i>Recommended</i> - Incrementally reads new inserts, updates, and deletes using MSSQL's <a href=\"https://docs.airbyte.com/integrations/sources/mssql/#change-data-capture-cdc\"> change data capture feature</a>. This must be enabled on your database.",
              "properties": {
                "initial_load_timeout_hours": {
                  "always_show": true,
                  "default": 8,
                  "description": "The amount of time an initial load is allowed to continue for before catching up on CDC logs.",
                  "max": 24,
                  "min": 4,
                  "order": 3,
                  "title": "Initial Load Timeout in Hours (Advanced)",
                  "type": "integer"
                },
                "initial_waiting_seconds": {
                  "always_show": true,
                  "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 <a href=\"https://docs.airbyte.com/integrations/sources/mssql#setting-up-cdc-for-mssql\">initial waiting time</a>",
                  "order": 1,
                  "title": "Initial Waiting Time in Seconds (Advanced)",
                  "type": "integer"
                },
                "invalid_cdc_cursor_position_behavior": {
                  "always_show": true,
                  "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.",
                  "enum": [
                    "Fail sync",
                    "Re-sync data"
                  ],
                  "order": 2,
                  "title": "Invalid CDC Position Behavior (Advanced)",
                  "type": "string"
                },
                "method": {
                  "default": "CDC",
                  "enum": [
                    "CDC"
                  ],
                  "type": "string"
                },
                "poll_interval_ms": {
                  "always_show": true,
                  "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.",
                  "max": 14999,
                  "min": 100,
                  "order": 4,
                  "title": "Poll Interval in Milliseconds (Advanced)",
                  "type": "integer"
                }
              },
              "required": [
                "method"
              ],
              "title": "Read Changes using Change Data Capture (CDC)",
              "type": "object"
            }
          ],
          "order": 12,
          "title": "Update Method",
          "type": "object"
        },
        "schemas": {
          "description": "The list of schemas to sync from. If not specified, all schemas will be discovered. Case sensitive.",
          "items": {
            "type": "string"
          },
          "minItems": 0,
          "order": 3,
          "title": "Schemas",
          "type": "array",
          "uniqueItems": true
        },
        "ssl_mode": {
          "default": "required",
          "description": "The encryption method which is used when communicating with the database.",
          "oneOf": [
            {
              "additionalProperties": true,
              "description": "Data transfer will not be encrypted.",
              "properties": {
                "mode": {
                  "default": "unencrypted",
                  "enum": [
                    "unencrypted"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "mode"
              ],
              "title": "Unencrypted",
              "type": "object"
            },
            {
              "additionalProperties": true,
              "description": "Use the certificate provided by the server without verification. (For testing purposes only!)",
              "properties": {
                "mode": {
                  "default": "encrypted_trust_server_certificate",
                  "enum": [
                    "encrypted_trust_server_certificate"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "mode"
              ],
              "title": "Encrypted (trust server certificate)",
              "type": "object"
            },
            {
              "additionalProperties": true,
              "description": "Verify and use the certificate provided by the server.",
              "properties": {
                "certificate": {
                  "airbyte_secret": true,
                  "description": "certificate of the server, or of the CA that signed the server certificate",
                  "multiline": true,
                  "order": 1,
                  "title": "Certificate",
                  "type": "string"
                },
                "hostNameInCertificate": {
                  "description": "Specifies the host name of the server. The value of this property must match the subject property of the certificate.",
                  "order": 0,
                  "title": "Host Name In Certificate",
                  "type": "string"
                },
                "mode": {
                  "default": "encrypted_verify_certificate",
                  "enum": [
                    "encrypted_verify_certificate"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "mode"
              ],
              "title": "Encrypted (verify certificate)",
              "type": "object"
            }
          ],
          "order": 10,
          "title": "Encryption",
          "type": "object"
        },
        "tenant_id": {
          "airbyte_hidden": true,
          "description": "Optional Microsoft Entra tenant ID. If omitted, the driver uses the tenant inferred from the service principal.",
          "group": "entra_id",
          "order": 9,
          "title": "Entra ID Tenant ID",
          "type": "string"
        },
        "tunnel_method": {
          "description": "Whether to initiate an SSH tunnel before connecting to the database, and if so, which kind of authentication to use.",
          "oneOf": [
            {
              "additionalProperties": true,
              "description": "No ssh tunnel needed to connect to database",
              "properties": {
                "tunnel_method": {
                  "default": "NO_TUNNEL",
                  "enum": [
                    "NO_TUNNEL"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "tunnel_method"
              ],
              "title": "No Tunnel",
              "type": "object"
            },
            {
              "additionalProperties": true,
              "description": "Connect through a jump server tunnel host using username and ssh key",
              "properties": {
                "ssh_key": {
                  "airbyte_secret": true,
                  "description": "OS-level user account ssh key credentials in RSA PEM format ( created with ssh-keygen -t rsa -m PEM -f myuser_rsa )",
                  "multiline": true,
                  "order": 4,
                  "title": "SSH Private Key",
                  "type": "string"
                },
                "tunnel_host": {
                  "description": "Hostname of the jump server host that allows inbound ssh tunnel.",
                  "order": 1,
                  "title": "SSH Tunnel Jump Server Host",
                  "type": "string"
                },
                "tunnel_method": {
                  "default": "SSH_KEY_AUTH",
                  "enum": [
                    "SSH_KEY_AUTH"
                  ],
                  "type": "string"
                },
                "tunnel_port": {
                  "default": 22,
                  "description": "Port on the proxy/jump server that accepts inbound ssh connections.",
                  "maximum": 65536,
                  "minimum": 0,
                  "order": 2,
                  "title": "SSH Connection Port",
                  "type": "integer"
                },
                "tunnel_user": {
                  "description": "OS-level username for logging into the jump server host",
                  "order": 3,
                  "title": "SSH Login Username",
                  "type": "string"
                }
              },
              "required": [
                "tunnel_method",
                "tunnel_host",
                "tunnel_port",
                "tunnel_user",
                "ssh_key"
              ],
              "title": "SSH Key Authentication",
              "type": "object"
            },
            {
              "additionalProperties": true,
              "description": "Connect through a jump server tunnel host using username and password authentication",
              "properties": {
                "tunnel_host": {
                  "description": "Hostname of the jump server host that allows inbound ssh tunnel.",
                  "order": 1,
                  "title": "SSH Tunnel Jump Server Host",
                  "type": "string"
                },
                "tunnel_method": {
                  "default": "SSH_PASSWORD_AUTH",
                  "enum": [
                    "SSH_PASSWORD_AUTH"
                  ],
                  "type": "string"
                },
                "tunnel_port": {
                  "default": 22,
                  "description": "Port on the proxy/jump server that accepts inbound ssh connections.",
                  "maximum": 65536,
                  "minimum": 0,
                  "order": 2,
                  "title": "SSH Connection Port",
                  "type": "integer"
                },
                "tunnel_user": {
                  "description": "OS-level username for logging into the jump server host",
                  "order": 3,
                  "title": "SSH Login Username",
                  "type": "string"
                },
                "tunnel_user_password": {
                  "airbyte_secret": true,
                  "description": "OS-level password for logging into the jump server host",
                  "order": 4,
                  "title": "Password",
                  "type": "string"
                }
              },
              "required": [
                "tunnel_method",
                "tunnel_host",
                "tunnel_port",
                "tunnel_user",
                "tunnel_user_password"
              ],
              "title": "Password Authentication",
              "type": "object"
            }
          ],
          "order": 11,
          "title": "SSH Tunnel Method",
          "type": "object"
        },
        "username": {
          "always_show": true,
          "description": "The username which is used to access the database. Not required if Microsoft Entra ID authentication is configured below.",
          "group": "auth",
          "order": 4,
          "title": "Username",
          "type": "string"
        }
      },
      "required": [
        "host",
        "port",
        "database",
        "replication_method"
      ],
      "title": "MSSQL Source Spec",
      "type": "object"
    },
    "documentationUrl": "https://docs.airbyte.com/integrations/sources/mssql",
    "supported_destination_sync_modes": [],
    "supportsDBT": false,
    "supportsNormalization": false
  },
  "supportLevel": "certified",
  "supportsDataActivation": false,
  "supportsFileTransfer": false,
  "tags": [
    "language:java"
  ],
  "tombstone": false
}
