Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: SQL Server 2022 (16.x) e versões posteriores
Banco de dados SQL do Azure
Instância Gerenciada de SQL do Azure
Banco de dados SQL no Microsoft Fabric
O SQL Server 2022 (16.x), o Banco de Dados SQL do Azure e a Instância Gerenciada de SQL do Azure dão suporte ao TDS (protocolo TDS) 8.0.
O protocolo TDS (Tabular Data Stream) é um protocolo de camada de aplicativo usado pelos clientes para estabelecer conexão com o SQL Server. O SQL Server usa o protocolo TLS para criptografar os dados transmitidos por uma rede entre uma instância do SQL Server e um aplicativo cliente.
O TDS é um protocolo seguro, mas nas versões anteriores do SQL Server, a criptografia podia ser desativada ou não podia ser habilitada. Para atender aos padrões de criptografia obrigatória ao usar o SQL Server, foi introduzida uma iteração do protocolo TDS: o TDS 8.0.
O handshake do TLS agora precede qualquer mensagem TDS, encapsulando a sessão TDS no TLS para impor a criptografia, alinhando o TDS 8.0 com HTTPS e outros protocolos Web. Esse aprimoramento contribui significativamente para a capacidade de gerenciamento de tráfego do TDS, já que os dispositivos de rede padrão agora são capazes de filtrar e passar consultas SQL com segurança.
Um benefício para o TDS 8.0 em comparação com as versões anteriores do TDS é sua compatibilidade com o TLS 1.3 e os padrões TLS que estão por vir. O TDS 8.0 também é totalmente compatível com o TLS 1.2 e versões anteriores do TLS.
Como o TDS funciona
O protocolo TDS é um protocolo no nível do aplicativo usado para a transferência de solicitações e respostas entre clientes e sistemas de servidores de banco de dados. O sistema cliente normalmente estabelece uma conexão de longa duração com o servidor. Depois que a conexão é estabelecida usando um protocolo de nível de transporte, as mensagens TDS são trocadas para se comunicarem entre o cliente e o SQL Server.
Durante o tempo de vida da sessão do TDS, há três fases:
- Inicialização
- Autenticação
- Troca de dados
A criptografia é negociada durante a fase inicial, mas a negociação do TDS ocorre em uma conexão não criptografada. A conexão do SQL Server é semelhante a esta em versões anteriores ao TDS 8.0:
Handshake do TCP ➡️ pré-logon do TDS (texto não criptografado) e resposta (texto não criptografado) ➡️ handshake do TLS ➡️ autenticação (criptografada) ➡️ troca de dados (pode ser criptografada ou não criptografada)
Com a introdução do TDS 8.0, as conexões do SQL Server serão assim:
Handshake do TCP ➡️ handshake do TLS ➡️ pré-logon do TDS (criptografado) e resposta (criptografada) ➡️ autenticação (criptografada) ➡️ troca de dados (criptografada)
Matriz de compatibilidade para opções de TDS, TLS, sistema operacional e criptografia
Você pode habilitar as versões TLS 1.2 e TLS 1.3 no nível do sistema operacional, o que permite que as conexões do cliente com o SQL Server usem várias versões de protocolo TDS (TDS 7.x e 8.0). Dependendo da versão do sistema operacional, o TLS 1.2 e o TLS 1.3 podem estar habilitados por padrão.
Somente o TDS 7.x dá suporte à comunicação não criptografada (opcional), o TDS 8.0 não dá suporte a isso. O TDS 7.x dá suporte à criptografia usando TLS até a versão 1.2. O TDS 8.0 requer criptografia – tudo é sempre criptografado com o TDS 8.0 (Encrypt=Strict). O TDS 8.0 não tem nenhum requisito mínimo de versão do TLS e dá suporte ao TLS 1.3. O suporte ao TLS 1.3 depende da versão do sistema operacional. A tabela a seguir resume vários cenários com as opções de criptografia e as versões TLS e TDS correspondentes.
| Criptografar Opção |
Versão do TLS habilitada | Versão do sistema operacional | Esperado conexão resultado |
Anotações |
|---|---|---|---|---|
| Rigoroso | Somente TLS 1.3 (ou posterior) | Windows 11 Windows Server 2022 e posterior |
Êxito | TLS 1.3 negociado; TDS 8.0 disparado (Encrypt=Strict) |
| Rigoroso | TLS 1.2 e TLS 1.3 | Windows 11 Windows Server 2022 e posterior |
Êxito | TLS 1.3 negociado; TDS 8.0 disparado (Encrypt=Strict) |
| Rigoroso | Somente TLS 1.2 (ou anterior) | Windows 11 Windows Server 2022 e posterior |
Êxito | TLS 1.2 negociado; TDS 8.0 disparado (Encrypt=Strict) |
| Rigoroso | Somente TLS 1.2 (ou anterior) | Windows 10 Windows Server 2019/2016 |
Êxito | TLS 1.2 negociado; TDS 8.0 disparado (TLS 1.3 não disponível) |
| Obrigatório | Somente TLS 1.3 (ou posterior) | Windows 11 Windows Server 2022 e posterior |
Failure | Encrypt=Mandatory é incompatível com o TLS 1.3 para TDS 8.0 |
| Obrigatório | TLS 1.2 e TLS 1.3 | Windows 11 Windows Server 2022 e posterior |
Êxito | TLS 1.2 negociado; TDS 8.0 não disparado (Criptografar=Obrigatório) |
| Obrigatório | Somente TLS 1.2 (ou anterior) | Windows 11 Windows Server 2022 e posterior |
Êxito | TLS 1.2 negociado; TDS 8.0 não disparado (Criptografar=Obrigatório) |
| Obrigatório | Somente TLS 1.2 (ou anterior) | Windows 10 Windows Server 2019/2016 |
Êxito | TLS 1.2 negociado; O TDS 8.0 não tem suporte neste sistema operacional (usa o TDS 7.x) |
| Opcional | Somente TLS 1.3 (ou posterior) | Windows 11 Windows Server 2022 e posterior |
Failure | Encrypt=Optional (false) é o TDS 7.x, que é incompatível com o TLS 1.3. |
| Opcional | TLS 1.2 e TLS 1.3 | Windows 11 Windows Server 2022 e posterior |
Êxito | TLS 1.3 negociado; TDS 8.0 não ativado (Criptografar=Opcional) |
| Opcional | Somente TLS 1.2 (ou anterior) | Windows 11 Windows Server 2022 e posterior |
Êxito | TLS 1.2 negociado; TDS 8.0 não disparado (Criptografia=Opcional) |
| Opcional | Somente TLS 1.2 (ou anterior) | Windows 10 Windows Server 2019/2016 |
Êxito | TLS 1.2 negociado; criptografia é opcional; a conexão pode ter sucesso sem criptografia |
| Qualquer | Somente TLS 1.3 (ou posterior) | Windows 10 Windows Server 2019/2016 |
Failure | O TLS 1.3 não tem suporte neste sistema operacional |
Para obter mais informações sobre como os clientes usam diferentes versões do TDS, consulte a seção Alterações nas propriedades de criptografia da cadeia de conexão.
Suporte ao SQL Server 2025
O SQL Server 2025 (17.x) apresenta suporte ao TDS 8.0 para as seguintes ferramentas de linha de comando e recursos do SQL Server:
- SQL Server Agent
- Utilitário sqlcmd
- utilitário bcp
- Gravador VSS do SQL
- Serviço CEIP do SQL
- Database Mail
- Polybase
- Grupos de disponibilidade Always On
- FCI (instância de cluster de failover do Always On)
- Servidores vinculados1
- Replicação transacional1
- Replicação de mesclagem1
- Replicação de instantâneo1
- Envio de logs1
1O suporte ao TDS 8.0 apresenta alterações significativas nesses recursos.
Criptografia de conexão estrita
Para usar o TDS 8.0, o SQL Server 2022 (16.x) adicionou strict como uma opção adicional de criptografia de conexão para os drivers do SQL Server (Encrypt=strict). Para usar o strict tipo de criptografia de conexão, baixe a versão mais recente dos drivers .NET, ODBC, OLE DB, JDBC, PHP e Python:
- Microsoft ADO.NET para banco de dados SQL Server e SQL do Azure versão 5.1 ou superior
- Driver ODBC para SQL Server versão 18.1.2.1 ou superior
- Microsoft OLE DB Driver para SQL Server versão 19.2.0 ou superior
- Microsoft JDBC Driver para SQL Server versão 11.2.0 ou superior.
- Versão dos Drivers da Microsoft para PHP para SQL Server versão 5.10 ou superior
- Driver SQL Python – pyodbc
Para evitar um ataque man-in-the-middle com a criptografia de conexão strict, os usuários não podem definir a opção TrustServerCertificatetrue, nem permitir qualquer certificado fornecido pelo servidor. Em vez disso, os usuários vão usar a opção HostNameInCertificate para especificar o certificado ServerName que deve ser confiável. O certificado fornecido pelo servidor precisaria passar pela validação do certificado. Para obter mais informações sobre validação de certificado, consulte os requisitos de certificado para o SQL Server
Alterações adicionais nas propriedades de criptografia da cadeia de conexão
As seguintes opções são adicionadas às cadeias de conexão para criptografar a comunicação:
| Palavra-chave | Padrão | Descrição |
|---|---|---|
Encrypt |
falso |
Opções de cadeia de conexão anteriores As opções válidas são - trueou yes - false, ou no. Para saber mais, confira Sintaxe de cadeia de conexão. Quando true, o SQL Server usa a criptografia TLS 1.2 para todos os dados trocados entre o cliente e o servidor se o servidor tiver um certificado instalado.Opções de cadeia de conexão mais recentes As opções válidas são - strict - mandatory, ou true, ou yes - optional, ou false, ou no. Quando definido como strict, o SQL Server usa o TDS 8.0 para todos os dados trocados entre o cliente e o servidor.Quando definido como mandatory, true ou yes, o SQL Server usa o TDS 7.x com criptografia TLS/SSL para todos os dados enviados entre o cliente e o servidor se o servidor tiver um certificado instalado.Quando definida como optional, false ou no, a conexão usa o TDS 7.x e será criptografada somente se exigido pelo SQL Server. |
TrustServerCertificate |
falso |
Opção de cadeia de conexão anterior Quando definido como true (não recomendado), o driver não valida o certificado TLS/SSL do servidor. Se true, o certificado TLS/SSL do servidor é automaticamente confiável (ignorando a validação) quando a camada de comunicação é criptografada usando TLS.Se false, o driver validará o certificado TLS/SSL do servidor. Em caso de falha na validação do certificado do servidor, o driver vai gerar um erro e fechar a conexão. O valor padrão é false. Verifique se o valor passado para serverName corresponde exatamente ao Common Name (CN) ou ao nome DNS no Subject Alternate Name no certificado do servidor para que uma conexão TLS/SSL tenha êxito.Alteração do comportamento do Microsoft SQL Server ODBC Driver 18 e posterior Se Encrypt estiver definido como strict, essa configuração especifica o local do certificado a ser usado para validação do certificado do servidor (correspondência exata). O driver é compatível com as extensões de arquivo PEM, DER e CER.Se Encrypt for definido como true ou false, e a TrustServerCertificate propriedade não for especificada ou definida como null, trueou false, o driver usará o valor da ServerName propriedade na URL de conexão como o nome do host para validar o certificado TLS/SSL do SQL Server. |
HostNameInCertificate |
null |
O nome do host a ser usado na validação do certificado TLS/SSL do SQL Server. Se a HostNameInCertificate propriedade não for especificada ou definida como null, o driver usará o valor da ServerName propriedade como o nome do host para validar o certificado TLS/SSL do SQL Server. |