Limitations
editThe library implements the protocol of SQL Server, not a database. This page lists what it does not do.
General
- Needs the ASP.NET Core shared framework.
- The query engine needs reflection: the package is trimmable and compatible with Native AOT, but the query engine is not. See Trimming and Native AOT.
- No database: the server stores nothing and runs no SQL by itself. Your query handler, or the query engine, answers every request.
Protocol
- SQL batches, RPC calls, bulk loads and local transactions only. Other request types return the error 50001 "Unsupported packet type".
- No distributed transactions (
System.Transactions, MSDTC): their requests return the error 50001. See Transactions. - Bulk loads are received batch by batch: a batch of
SqlBulkCopycannot be larger thanMaxMessageSize, and decimal columns are declareddecimal(38, 10). See Bulk loads. - Text columns use one collation. Variant, UserDefined and
Tablecolumns are sent asnvarchartext.
Authentication and encryption
- No Microsoft Entra ID authentication. SQL logins and integrated Windows authentication (NTLM, Kerberos, through an SSPI exchange run by the authentication handler) are supported. See Authentication.
- TLS 1.2 when TLS is negotiated in the TDS PRELOGIN exchange (
Encrypt=TrueorOptional). UseEncrypt=Strictfor TLS 1.3. See Encryption. - No encryption by default: without a certificate, passwords and data travel in clear text.
Query engine
SELECTstatements only: no recursive common table expressions, noINSERT,UPDATEorDELETE. See Supported SQL.LIKEcompares characters ordinally, so it is case-sensitive.- The XML methods take XPath 1.0, not XQuery.
- A stored procedure that returns an
IQueryableis enumerated synchronously.