Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo descreve alterações marcantes entre o Microsoft ODBC Driver 18 para SQL Server e a versão 17.
A maioria das aplicações que atualizam da versão 17 para a versão 18 é afetada por uma única alteração: as ligações são encriptadas por defeito. Se a sua aplicação deixar de se ligar após atualizar, leia primeiro o comportamento de encriptação padrão .
Resumo das alterações
| Area | Versão 17 | Versão 18 e versões posteriores |
|---|---|---|
Configuração padrão Encrypt |
no |
yes |
Encrypt Valores aceites |
yes, no |
yes, no, Mandatory, Optional, Strict |
| Modos de encriptação | De vez em quando | Desligada, ligada ou rígida |
| Validação de certificado do servidor | Não acontece a menos que peça encriptação | Ocorre por defeito, porque a encriptação está ativada por defeito |
| Palavras-chave de cadeia de ligação | Conjunto base | Conjunto base mais novas palavras-chave |
Alterações de criptografia
Comportamento padrão de encriptação
Na versão 17, as ligações não são encriptadas a menos que peça encriptação ou que o servidor a exija isso. Na versão 18 e versões posteriores, as ligações são encriptadas por defeito.
Como o driver valida o certificado do servidor sempre que encripta uma ligação, uma aplicação que se liga a um servidor com um certificado auto-assinado ou não confiável liga-se 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.
Tens três formas de o resolver, listadas do mais ao menos seguro:
- Instale um certificado no servidor em que o cliente confia. Esta opção é a recomendada e é a única que mantém tanto a encriptação como a validação.
- Mantenha a encriptação ativa e indique ao driver qual nome validar, definindo
HostNameInCertificateouServerCertificate. - Desligue a encriptação para restaurar o padrão da versão 17, adicionando
Encrypt=noà cadeia de ligação.
Atenção
A configuração TrustServerCertificate=yes mantém a ligação encriptada mas desativa a validação do certificado, o que deixa a ligação vulnerável a ataques adversários no meio. Prefira um certificado de confiança.
Encriptar valores
A versão 17 aceita apenas yes e no. A versão 18 e versões posteriores aceitam esses valores e acrescentam mais três:
| Value | Equivalente a | Comportamento |
|---|---|---|
Mandatory |
yes |
A ligação está encriptada. |
Optional |
no |
A ligação não está encriptada a menos que o servidor o exija assim. |
Strict |
None | A ligação utiliza encriptação TDS 8.0. |
Strict não tem equivalente à versão 17. É o único valor que seleciona o TDS 8.0, onde a encriptação é negociada antes da troca de login em vez de durante ela.
Restaurar comportamento de encriptação 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 com que a cadeia de ligação se comporte da mesma forma em ambas as versões.
Novas palavras-chave para cadeia de ligação
A versão 18 adiciona as seguintes palavras-chave de cadeia de ligação, que a versão 17 não reconhece:
| Keyword | Purpose |
|---|---|
ConcatNullYieldsNull |
Controla se a concatenação de um valor nulo resulta em valor nulo. |
GetDataExtensions |
Controla quais SQLGetData extensões o driver ativa. |
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 os seus max equivalentes. |
RetryExec |
Configura regras de retentativa para consultas falhadas. |
ServerCertificate |
Especifica o caminho para um ficheiro de certificado para validar o servidor. |
Palavras-chave individuais foram introduzidas em diferentes versões da versão 18. Para a versão que introduziu cada palavra-chave, e para a referência completa de palavras-chave, veja ODBC DSN e cadeia de ligação keywords.