Principais diferenças de versão no Microsoft ODBC Driver for SQL Server

Este artigo descreve mudanças de impacto entre o Driver 18 do Microsoft ODBC para SQL Server e a versão 17.

A maioria dos aplicativos que atualizam da versão 17 para a versão 18 é afetada por uma única alteração: as conexões são criptografadas por padrão. Se sua aplicação para de se conectar após a atualização, leia primeiro o comportamento padrão de criptografia .

Resumo das alterações

Area Versão 17 Versão 18 e versões posteriores
Configuração padrão Encrypt no yes
Encrypt Valores aceitos yes, no yes, no, Mandatory, Optional, Strict
Modos de criptografia De vez em quando Desligada, ligada ou rígida
Validação do certificado do servidor Isso não acontece a menos que você peça criptografia Ocorre por padrão, porque a criptografia está ativada por padrão
Palavras-chave de cadeia de conexão Conjunto base Conjunto base mais novas palavras-chave

Alterações de criptografia

Comportamento de criptografia padrão

Na versão 17, as conexões não são criptografadas a menos que você peça criptografia ou o servidor exija isso. Na versão 18 e versões posteriores, as conexões são criptografadas por padrão.

Como o driver valida o certificado do servidor sempre que criptografa uma conexão, um aplicativo que se conecta a um servidor com um certificado autoassinado ou não confiável se conecta com sucesso com a versão 17 e falha com a versão 18. A falha é um erro de validação de certificado, não um erro de autenticação.

Você tem três formas de resolver isso, listadas do mais ao menos seguro:

  • Instale um certificado no servidor em que o cliente confia. Essa opção é a recomendada, e é a única que mantém tanto a criptografia quanto a validação.
  • Mantenha a criptografia ativa e informe ao driver qual nome validar, configurando HostNameInCertificate ou ServerCertificate.
  • Desligue a criptografia para restaurar o padrão da versão 17, adicionando Encrypt=no à cadeia de conexão.

Caution

A configuração TrustServerCertificate=yes mantém a conexão criptografada, mas desativa a validação do certificado, o que deixa a conexão vulnerável a ataques adversários no meio. Prefira um certificado confiável.

Valores de criptografia

A versão 17 aceita apenas yes e no. A versão 18 e versões posteriores aceitam esses valores e adicionam mais três:

Value Equivalente a Behavior
Mandatory yes A conexão é criptografada.
Optional no A conexão não é criptografada a menos que o servidor exija.
Strict None A conexão utiliza criptografia TDS 8.0.

Strict não possui equivalente à versão 17. É o único valor que seleciona o TDS 8.0, onde a criptografia é negociada antes da troca de login, e não durante ela.

Restaurar comportamento de criptografia da versão 17

Para restaurar o comportamento padrão da versão 17, defina Encrypt explicitamente:

Driver={ODBC Driver 18 for SQL Server};Server=<server>;Database=<database>;UID=<user_id>;PWD=<password>;Encrypt=no;

Definir o valor explicitamente é benéfico mesmo na versão 17, porque faz a cadeia de conexão agir da mesma forma em ambas as versões.

Novas palavras-chave de cadeia de conexão

A versão 18 adiciona as seguintes palavras-chave de cadeia de conexão, que a versão 17 não reconhece:

Keyword Purpose
ConcatNullYieldsNull Determina se concatenar um valor nulo gera valor nulo.
GetDataExtensions Controle quais SQLGetData extensões o driver permite.
HostNameInCertificate Especifica o nome do host a validar no certificado TLS do servidor.
IpAddressPreference Especifica a família de endereços IP que o driver tenta primeiro.
LongAsMax Mapeia tipos de dados longos para seus max equivalentes.
RetryExec Configura regras de retentativa para consultas falhadas.
ServerCertificate Especifica o caminho para um arquivo de certificado para validar o servidor contra ele.

Palavras-chave individuais foram introduzidas em diferentes versões 18. Para a versão que introduziu cada palavra-chave e para a referência completa de palavras-chave, veja ODBC DSN e palavras-chave de cadeia de conexão.