You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/relational-databases/errors-events/includes/sql-server-2016-database-engine-events-and-errors-10000-10999.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -33,7 +33,7 @@ ms.topic: include
33
33
| 10042 | 16 | No | Cannot set any properties while there is an open rowset. |
34
34
| 10052 | 16 | No | The insertion was canceled by the provider during notification. |
35
35
| 10053 | 16 | No | Could not convert the data value due to reasons other than sign mismatch or overflow. |
36
-
| 10054 | 16 | No | The data value for one or more columns overflowed the type used by the provider. |
36
+
|[10054](../mssqlserver-10054-database-engine-error.md)| 16 | No | The data value for one or more columns overflowed the type used by the provider. |
37
37
| 10055 | 16 | No | The data violated the integrity constraints for one or more columns. |
38
38
| 10056 | 16 | No | The number of rows that have pending changes has exceeded the limit specified by the DBPROP_MAXPENDINGROWS property. |
39
39
| 10057 | 16 | No | Cannot create the row. Would exceed the total number of active rows supported by the rowset. |
Copy file name to clipboardExpand all lines: docs/relational-databases/errors-events/includes/sql-server-2017-database-engine-events-and-errors-10000-10999.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -33,7 +33,7 @@ ms.topic: include
33
33
| 10042 | 16 | No | Cannot set any properties while there is an open rowset. |
34
34
| 10052 | 16 | No | The insertion was canceled by the provider during notification. |
35
35
| 10053 | 16 | No | Could not convert the data value due to reasons other than sign mismatch or overflow. |
36
-
| 10054 | 16 | No | The data value for one or more columns overflowed the type used by the provider. |
36
+
|[10054](../mssqlserver-10054-database-engine-error.md)| 16 | No | The data value for one or more columns overflowed the type used by the provider. |
37
37
| 10055 | 16 | No | The data violated the integrity constraints for one or more columns. |
38
38
| 10056 | 16 | No | The number of rows that have pending changes has exceeded the limit specified by the DBPROP_MAXPENDINGROWS property. |
39
39
| 10057 | 16 | No | Cannot create the row. Would exceed the total number of active rows supported by the rowset. |
Copy file name to clipboardExpand all lines: docs/relational-databases/errors-events/includes/sql-server-2019-database-engine-events-and-errors-10000-10999.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -33,7 +33,7 @@ ms.topic: include
33
33
| 10042 | 16 | No | Cannot set any properties while there is an open rowset. |
34
34
| 10052 | 16 | No | The insertion was canceled by the provider during notification. |
35
35
| 10053 | 16 | No | Could not convert the data value due to reasons other than sign mismatch or overflow. |
36
-
| 10054 | 16 | No | The data value for one or more columns overflowed the type used by the provider. |
36
+
|[10054](../mssqlserver-10054-database-engine-error.md)| 16 | No | The data value for one or more columns overflowed the type used by the provider. |
37
37
| 10055 | 16 | No | The data violated the integrity constraints for one or more columns. |
38
38
| 10056 | 16 | No | The number of rows that have pending changes has exceeded the limit specified by the DBPROP_MAXPENDINGROWS property. |
39
39
| 10057 | 16 | No | Cannot create the row. Would exceed the total number of active rows supported by the rowset. |
Copy file name to clipboardExpand all lines: docs/relational-databases/errors-events/includes/sql-server-2022-database-engine-events-and-errors-10000-10999.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -33,7 +33,7 @@ ms.topic: include
33
33
| 10042 | 16 | No | Cannot set any properties while there is an open rowset. |
34
34
| 10052 | 16 | No | The insertion was canceled by the provider during notification. |
35
35
| 10053 | 16 | No | Could not convert the data value due to reasons other than sign mismatch or overflow. |
36
-
| 10054 | 16 | No | The data value for one or more columns overflowed the type used by the provider. |
36
+
|[10054](../mssqlserver-10054-database-engine-error.md)| 16 | No | The data value for one or more columns overflowed the type used by the provider. |
37
37
| 10055 | 16 | No | The data violated the integrity constraints for one or more columns. |
38
38
| 10056 | 16 | No | The number of rows that have pending changes has exceeded the limit specified by the DBPROP_MAXPENDINGROWS property. |
39
39
| 10057 | 16 | No | Cannot create the row. Would exceed the total number of active rows supported by the rowset. |
| Message Text | A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.) (Framework Microsoft SqlClient Data Provider). |
28
+
29
+
## Explanation
30
+
31
+
A connection to the server was attempted and established, but then before signing in, an error occurred.
32
+
33
+
This error can occur when trying to connect to [!INCLUDE [ssNoVersion](../../includes/ssnoversion-md.md)] using a lower level of encryption than required.
34
+
35
+
## User action
36
+
37
+
To find the cause of the error, review the configuration for [!INCLUDE [ssNoVersion](../../includes/ssnoversion-md.md)]. For information on how to encrypt connections for [!INCLUDE [ssNoVersion](../../includes/ssnoversion-md.md)], see [Configure SQL Server Database Engine for encrypting connections](../../database-engine/configure-windows/configure-sql-server-encryption.md).
38
+
39
+
For more information related to troubleshooting, see [An existing connection was forcibly closed by the remote host (OS error 10054)](/troubleshoot/sql/database-engine/connect/tls-exist-connection-closed).
40
+
41
+
## Related content
42
+
43
+
-[Special cases for encrypting connections to SQL Server](../../database-engine/configure-windows/special-cases-for-encrypting-connections-sql-server.md)
44
+
-[Certificate requirements for SQL Server](../../database-engine/configure-windows/certificate-requirements.md)
[!INCLUDE [sssql22-md](../../../includes/sssql22-md.md)], [!INCLUDE [ssazure-sqldb](../../../includes/ssazure-sqldb.md)], and [!INCLUDE [ssazuremi-md](../../../includes/ssazuremi-md.md)] support Tabular Data Stream (TDS) 8.0.
18
18
19
-
The [Tabular Data Stream (TDS)](/openspecs/windows_protocols/ms-tds/b46a581a-39de-4745-b076-ec4dbb7d13ec) protocol is an application layer protocol used by clients to connect to SQL Server, while SQL Server uses Transport Layer Security (TLS) to encrypt data that is transmitted across a network between an instance of SQL Server and a client application.
19
+
The [Tabular Data Stream (TDS)](/openspecs/windows_protocols/ms-tds/b46a581a-39de-4745-b076-ec4dbb7d13ec) protocol is an application layer protocol used by clients to connect to SQL Server. SQL Server uses Transport Layer Security (TLS) to encrypt data that is transmitted across a network between an instance of SQL Server and a client application.
20
20
21
-
TDS is a secure protocol, but in previous versions of SQL Server, encryption could be turned off or not enabled. To meet the standards of mandatory encryption while using SQL Server, an iteration of the TDS protocol was introduced: TDS 8.0
21
+
TDS is a secure protocol, but in previous versions of SQL Server, encryption could be turned off or not enabled. To meet the standards of mandatory encryption while using SQL Server, an iteration of the TDS protocol was introduced: TDS 8.0.
22
22
23
-
The TLS handshake now precedes any TDS messages, wrapping the TDS session in TLS to enforce encryption, making TDS 8.0 aligned with HTTPS and other web protocols. This significantly contributes to TDS traffic manageability as standard network appliances are now able to filter and securely passthrough SQL queries.
23
+
The TLS handshake now precedes any TDS messages, wrapping the TDS session in TLS to enforce encryption, making TDS 8.0 aligned with HTTPS and other web protocols. This significantly contributes to TDS traffic manageability, as standard network appliances are now able to filter and securely passthrough SQL queries.
24
24
25
25
Another benefit to TDS 8.0 compared to previous TDS versions is compatibility with TLS 1.3, and TLS standards to come. TDS 8.0 is also fully compatible with TLS 1.2 and previous TLS versions.
26
26
27
27
## How TDS works
28
28
29
-
The Tabular Data Stream (TDS) protocol is an application-level protocol used for the transfer of requests and responses between clients and database server systems. In such systems, the client will typically establish a long-lived connection with the server. Once the connection is established using a transport-level protocol, TDS messages are used to communicate between the client and the server.
29
+
The Tabular Data Stream (TDS) protocol is an application-level protocol used for the transfer of requests and responses between clients and database server systems. In such systems, the client typically establishes a long-lived connection with the server. Once the connection is established using a transport-level protocol, TDS messages are used to communicate between the client and the server.
30
30
31
31
During the TDS session lifespan, there are three phases:
To use TDS 8.0, [!INCLUDE [sssql22-md](../../../includes/sssql22-md.md)] added `strict` as an additional connection encryption type to SQL Server drivers (`Encrypt=strict`). Download the latest version of the .NET, ODBC, OLE DB, JDBC, PHP and Python drivers to use the `strict` connection encryption type.
47
+
To use TDS 8.0, [!INCLUDE [sssql22-md](../../../includes/sssql22-md.md)] added `strict` as an additional connection encryption type to SQL Server drivers (`Encrypt=strict`). To use the `strict` connection encryption type, download the latest version of the .NET, ODBC, OLE DB, JDBC, PHP, and Python drivers.
48
48
49
49
-[Microsoft ADO.NET for SQL Server and Azure SQL Database](../../../connect/ado-net/microsoft-ado-net-sql-server.md) version 5.1 or higher
50
50
-[ODBC Driver for SQL Server](../../../connect/odbc/download-odbc-driver-for-sql-server.md) version 18.1.2.1 or higher
@@ -59,7 +59,7 @@ In order to prevent a man-in-the-middle attack with `strict` connection encrypti
59
59
60
60
The `Force Strict Encryption` option added with TDS 8.0 in SQL Server Network Configuration forces all clients to use `strict` as the encryption type. Any clients or features without the `strict` connection encryption fail to connect to SQL Server.
61
61
62
-
The following is a list of features or tools that still use previous version of drivers that don't support TDS 8.0, and as such, may not work with the `strict` connection encryption:
62
+
The following features or tools still use previous version of drivers that don't support TDS 8.0, and as such, might not work with the `strict` connection encryption:
63
63
64
64
- Always On availability groups
65
65
- Always On failover cluster instance (FCI)
@@ -80,9 +80,9 @@ The following additions are added to connection strings for encryption:
80
80
| Keyword | Default | Description |
81
81
| --- | --- | --- |
82
82
|**Encrypt**|*false*|**Existing behavior**<br />When `true`, SQL Server uses TLS encryption for all data sent between the client and server if the server has a certificate installed. Recognized values are `true`, `false`, `yes`, and `no`. For more information, see [Connection String Syntax](/dotnet/framework/data/adonet/connection-string-syntax).<br /><br />**Change of behavior**<br />When set to `strict`, SQL Server uses TDS 8.0 for all data sent between the client and server.<br /><br />When set to `mandatory`, `true`, or `yes`, SQL Server uses TDS 7.x with TLS/SSL encryption for all data sent between the client and server if the server has a certificate installed.<br /><br />When set to `optional`, `false`, or `no`, the connection uses TDS 7.x and would be encrypted only if required by the SQL Server. |
83
-
| **TrustServerCertificate** | *false* | **Existing behavior**<br />Set to `true` to specify that the driver doesn't validate the server TLS/SSL certificate. If `true`, the server TLS/SSL certificate is automatically trusted when the communication layer is encrypted using TLS.<br /><br />If `false`, the driver validates the server TLS/SSL certificate. If the server certificate validation fails, the driver raises an error and closes the connection. The default value is `false`. Make sure the value passed to `serverName` exactly matches the `Common Name (CN)` or DNS name in the `Subject Alternate Name` in the server certificate for a TLS/SSL connection to succeed.<br /><br />**Change of behavior for Microsoft ODBC Driver 18 for SQL Server**<br />If **Encrypt** is set to `strict`, this setting specifies the location of the certificate to be used for server certificate validation (exact match). The driver supports PEM, DER, and CER file extensions.<br /><br />If Encrypt is set to `true` or `false`, and the `TrustServerCertificate` property is unspecified or set to `null`, `true` or `false`, the driver uses the `ServerName` property value on the connection URL as the host name to validate the SQL Server TLS/SSL certificate. |
83
+
| **TrustServerCertificate** | *false* | **Existing behavior**<br />Set to `true` to specify that the driver doesn't validate the server TLS/SSL certificate. If `true`, the server TLS/SSL certificate is automatically trusted when the communication layer is encrypted using TLS.<br /><br />If `false`, the driver validates the server TLS/SSL certificate. If the server certificate validation fails, the driver raises an error and closes the connection. The default value is `false`. Make sure the value passed to `serverName` exactly matches the `Common Name (CN)` or DNS name in the `Subject Alternate Name` in the server certificate for a TLS/SSL connection to succeed.<br /><br />**Change of behavior for Microsoft ODBC Driver 18 for SQL Server**<br />If **Encrypt** is set to `strict`, this setting specifies the location of the certificate to be used for server certificate validation (exact match). The driver supports PEM, DER, and CER file extensions.<br /><br />If Encrypt is set to `true` or `false`, and the `TrustServerCertificate` property is unspecified or set to `null`, `true`, or `false`, the driver uses the `ServerName` property value on the connection URL as the host name to validate the SQL Server TLS/SSL certificate. |
84
84
|**HostNameInCertificate**|*null*| The host name to be used in validating the SQL Server TLS/SSL certificate. If the **HostNameInCertificate** property is unspecified or set to `null`, the driver uses the `ServerName` property value as the host name to validate the SQL Server TLS/SSL certificate. |
85
85
86
-
## Next steps
86
+
## Related content
87
87
88
88
-[Connect to SQL Server with strict encryption](connect-with-strict-encryption.md)
0 commit comments