mssql

DuckDB über natives TDS (einschließlich TLS) mit Microsoft SQL Server verbinden.

Maintainer: VGSML

Installation und Laden

INSTALL mssql FROM community;
LOAD mssql;

Beispiel

INSTALL mssql FROM community;
LOAD mssql;
ATTACH 'Server=localhost,1433;Database=master;User Id=sa;Password=YourStrong!Passw0rd' AS ms (TYPE mssql);
SELECT * FROM ms.dbo.your_table LIMIT 5;

Über mssql

DuckDB-Connector für Microsoft SQL Server, Azure SQL und Microsoft Fabric über eine native TDS-7.4-Implementierung — kein ODBC, JDBC oder FreeTDS erforderlich. Hängen Sie einen Server als DuckDB-Katalog an und fragen, joinen und bulk-laden Sie ihn neben Ihren lokalen Daten.

Dokumentation: https://hugr-lab.github.io/mssql-extension/

Lesen. Angehängte Tabellen bringen Schema-/Tabellenkatalog-Integration, lazy Metadaten-Cache, Projektions-/Filter-/ORDER-BY-Pushdown und einen spaltenweisen, batch-dekodierten Ergebnispfad. Das Lesen UTF-8-kollationierter Spalten überspringt die UTF-16-Transkodierung vollständig (TDS UTF8SUPPORT).

Schreiben. COPY TO und CTAS laufen über das BCP-Bulk-Load-Protokoll mit einem spaltenweisen Encoder und bis zu 8 parallelen Bulk-Sitzungen — etwa 6× schneller standardmäßig als 0.2.2 auf einer breiten 38-Millionen-Zeilen-Tabelle und ~9× mit bemessenen String-Zielen (MSSQL_VARCHAR(n) / MSSQL_NVARCHAR(n)-Annotationen oder mssql_default_string_length). Heap- und Clustered-Columnstore-Ziele (Rowgroups landen direkt komprimiert), TABLOCK wird aus der tatsächlichen Form des Ziels entschieden. INSERT mit RETURNING, UPDATE/DELETE, Transaktionen mit Connection Pinning.

Authentifizierung. SQL-Logins, Azure Entra ID (Service Principal, CLI, Device Code), Kerberos auf POSIX (kinit/keytab), Windows SSPI, TLS, DuckDB-Secrets.

Betrieb. Verbindungspooling pro Katalog, eifrige Credential-Validierung beim ATTACH, Auflösung benannter Instanzen über SQL Server Browser, benutzerdefinierter Application Name, XML-Typunterstützung.

Issues und Feature-Requests: https://github.com/hugr-lab/mssql-extension

Hinzugefügte Funktionen

function_name function_type description comment examples
mssql_azure_auth_test scalar NULL NULL
mssql_close scalar NULL NULL
mssql_close_all scalar NULL NULL
mssql_exec scalar NULL NULL
mssql_invalidate_cache scalar NULL NULL
mssql_kerberos_auth_test scalar NULL NULL
mssql_kerberos_auth_test_secret scalar NULL NULL
mssql_open scalar NULL NULL
mssql_ping scalar NULL NULL
mssql_pool_stats table NULL NULL
mssql_preload_catalog scalar NULL NULL
mssql_refresh_cache scalar NULL NULL
mssql_scan table NULL NULL
mssql_version scalar NULL NULL
mssql_winsspi_auth_test scalar NULL NULL
mssql_winsspi_auth_test_spn scalar NULL NULL

Überladene Funktionen

Diese Erweiterung fügt keine Funktionsüberladungen hinzu.

Hinzugefügte Typen

type_name type_size logical_type type_category internal
MSSQL_NVARCHAR 16 VARCHAR STRING true
MSSQL_VARCHAR 16 VARCHAR STRING true

Hinzugefügte Einstellungen

name description input_type scope aliases
mssql_acquire_timeout Connection acquire timeout in seconds (0 = fail immediately) BIGINT GLOBAL []
mssql_attach_validation_timeout Timeout in seconds for the ATTACH-time credential round trip (0 = inherit mssql_connection_timeout). Spec 047 / US2. BIGINT GLOBAL []
mssql_browser_timeout_seconds SQL Server Browser UDP query timeout in seconds for named-instance resolution (default: 3) BIGINT GLOBAL []
mssql_catalog_cache_ttl Metadata cache TTL in seconds (0 = manual refresh only) BIGINT GLOBAL []
mssql_catalog_native_types Report MSSQL_VARCHAR(n)/MSSQL_NVARCHAR(n) for attached string columns instead of VARCHAR (default: true) BOOLEAN GLOBAL []
mssql_connection_cache Enable connection pooling and reuse BOOLEAN GLOBAL []
mssql_connection_limit Maximum connections per attached mssql database BIGINT GLOBAL []
mssql_connection_timeout TCP connection timeout in seconds BIGINT GLOBAL []
mssql_convert_varchar_max Convert VARCHAR(MAX) to NVARCHAR(MAX) in table scans for UTF-8 compatibility (default: true) BOOLEAN GLOBAL []
mssql_copy_flush_rows Rows per bulk-load batch sent to SQL Server (default: 102400 — SQL Server’s threshold for writing compressed columnstore rowgroups directly; 0 = one batch at the end, high memory) BIGINT GLOBAL []
mssql_copy_parallel_writers Concurrent bulk-load connections a single COPY/CTAS may open (default: 0 = derive from DuckDB’s thread count, capped at 8). 1 disables parallel loading. Ignored inside an explicit transaction, where the connection is pinned BIGINT GLOBAL []
mssql_copy_tablock TABLOCK hint for COPY/BCP: ‘auto’ (by target shape — heap on, anything clustered off), ‘true’, or ‘false’ VARCHAR GLOBAL []
mssql_ctas_drop_on_failure Drop table if CTAS insert phase fails (default: false, table remains for debugging) BOOLEAN GLOBAL []
mssql_ctas_text_type Type given to an unannotated VARCHAR column by CTAS and COPY: NVARCHAR (Unicode, default) or VARCHAR (single-byte, needs a UTF-8 collation) VARCHAR GLOBAL []
mssql_ctas_use_bcp Use BCP protocol for CTAS data transfer (default: true, 2-10x faster than INSERT) BOOLEAN GLOBAL []
mssql_default_string_length Length for an unannotated VARCHAR column created by CTAS/COPY (0 = MAX, the default) BIGINT GLOBAL []
mssql_default_table_kind Shape of a table created by CTAS/COPY: HEAP (default) or COLUMNSTORE VARCHAR GLOBAL []
mssql_dml_batch_size Maximum rows per UPDATE/DELETE batch (default: 500, affects parameter count) BIGINT GLOBAL []
mssql_dml_max_parameters Maximum parameters per UPDATE/DELETE statement (SQL Server limit ~2100) BIGINT GLOBAL []
mssql_dml_use_prepared Use prepared statements for UPDATE/DELETE operations BOOLEAN GLOBAL []
mssql_enable_statistics Enable statistics collection from SQL Server for query optimizer BOOLEAN GLOBAL []
mssql_exec_invalidate_cache Invalidate the catalog cache after DDL executed via mssql_exec() (CREATE/DROP/ALTER/TRUNCATE/RENAME/EXEC) BOOLEAN GLOBAL []
mssql_idle_timeout Idle connection timeout in seconds (0 = no timeout) BIGINT GLOBAL []
mssql_insert_batch_size Maximum rows per INSERT statement (SQL Server limit: 1000) BIGINT GLOBAL []
mssql_insert_max_rows_per_statement Hard cap on rows per INSERT statement (SQL Server limit: 1000) BIGINT GLOBAL []
mssql_insert_max_sql_bytes Maximum SQL statement size in bytes BIGINT GLOBAL []
mssql_insert_use_returning_output Use OUTPUT INSERTED for RETURNING clause BOOLEAN GLOBAL []
mssql_login7_max_packet TEST-ONLY: max LOGIN7 TDS packet size in bytes for integrated auth (0 = default 4096) BIGINT GLOBAL []
mssql_metadata_timeout Metadata query timeout in seconds (default: 300, 0 = no timeout). Increase for very large catalogs BIGINT GLOBAL []
mssql_min_connections Minimum connections to maintain per context BIGINT GLOBAL []
mssql_named_instance_resolution Enable SQL Server Browser (UDP 1434) resolution of host\instance connection strings BOOLEAN GLOBAL []
mssql_order_pushdown Enable ORDER BY pushdown to SQL Server (default: false) BOOLEAN GLOBAL []
mssql_query_timeout Query execution timeout in seconds (0 = no timeout, default: 30) BIGINT GLOBAL []
mssql_reset_connection Reset session state (temp tables, SET options, open transactions) when a connection returns to the pool; false hands that state to the user BOOLEAN GLOBAL []
mssql_statistics_cache_ttl_seconds Statistics cache TTL in seconds BIGINT GLOBAL []
mssql_statistics_level Statistics detail level: 0=row count, 1=+histogram min/max, 2=+NDV BIGINT GLOBAL []
mssql_statistics_use_dbcc Allow DBCC SHOW_STATISTICS for column statistics (requires permissions) BOOLEAN GLOBAL []
mssql_tds_packet_size TDS frame size in bytes requested at login, clamped to [512, 32767] (default: 16384) BIGINT GLOBAL []
mssql_utf8_collation Collation given to VARCHAR columns created by CTAS when the server supports UTF-8 (default: Latin1_General_100_BIN2_UTF8, matching Fabric; empty inherits the database default) VARCHAR GLOBAL []
mssql_utf8_support Advertise the UTF8SUPPORT feature in LOGIN7 so UTF-8 collation columns arrive as UTF-8 instead of UTF-16 (default: true) BOOLEAN GLOBAL []