Compartilhar via


Principais diferenças de versão

Este artigo descreve alterações significativas entre o Microsoft OLE DB Driver 19 para SQL Server e versões anteriores.

Dica

MSOLEDBSQL19 (Microsoft OLE DB Driver 19 para SQL Server) é o driver OLE DB recomendado atualmente. Ele dá suporte ao TDS 8.0 e aos recursos de segurança modernos. A versão 19.2.0+ também dá suporte ao TLS 1.3. Use Provider=MSOLEDBSQL19 em suas cadeias de conexão.

Resumo das alterações

Area Versão 18 e anterior Versão 19+
Configuração de criptografia padrão (Encrypt) no (nenhuma criptografia ou o servidor pode exigir criptografia) Mandatory (criptografia necessária)
Encrypt tipo de propriedade VT_BOOL VT_BSTR
Encrypt valores válidos no/yes no/yes/true/false/Optional/Mandatory/Strict
Validação de certificado Ignorado quando o cliente define Encrypt=no Sempre avaliado quando a criptografia ocorre
Nome do driver MSOLEDBSQL MSOLEDBSQL19
CLSID MSOLEDBSQL_CLSID (herdado) MSOLEDBSQL_CLSID (atualizado no cabeçalho)

Aviso

A autenticação ActiveDirectoryPassword foi preterida. Se você estiver migrando da versão 18 para 19 e usando Authentication=ActiveDirectoryPassword, planeje migrar para um método de autenticação mais seguro. Consulte métodos de autenticação preteridos para obter alternativas.

Alterações na propriedade de criptografia

Criptografar alteração de tipo de propriedade

A propriedade SSPROP_INIT_ENCRYPT do driver muda de VT_BOOL para VT_BSTR.

Cadeia de conexão Valores da versão 18 Valores da versão 19
Provedor: Encrypt no/yes no/yes/true/false/Optional/Mandatory/Strict
Idatainitialize: Use Encryption for Data true/false no/yes/true/false/Optional/Mandatory/Strict

Mapeamento de valor:

Mode Valores equivalentes Comportamento
Optional no, false Não criptografado, a menos que o servidor exija
Mandatory (padrão) yes, true Conexão criptografada necessária
Strict (sem equivalente) Criptografia TDS 8.0; requer o SQL Server 2022+

Dica

A partir da versão 19.2.0, as conexões TDS 8.0 podem usar o TLS 1.3 ao se conectar ao SQL Server 2022 ou posterior. A ServerCertificate propriedade também foi adicionada nesta versão. Para saber mais, confira o Suporte ao TLS 1.3.

Para compatibilidade com versões anteriores, a versão 19 aceita todos os valores da versão 18 (yes/no) além dos novos valores ().Optional/Mandatory/Strict

Comportamento de criptografia padrão

Versão Padrão Resultado
18 e anteriores no Conexões não criptografadas por padrão
19+ Mandatory Conexões criptografadas por padrão

Para restaurar o comportamento da versão 18, adicione uma destas opções à cadeia de conexão:

  • Provedor: Encrypt=Optional;
  • Idatainitialize: Use Encryption for Data=Optional;

Comportamento de validação de certificado

Scenario Versão 18 Versão 19+
Conjuntos de clientes Encrypt=no, o servidor não força a criptografia Nenhuma validação Nenhuma validação
Conjuntos de clientes Encrypt=no, servidor força criptografia Trust Server Certificate Ignorado Trust Server Certificate Avaliada
Conjuntos de clientes Encrypt=yes Trust Server Certificate Avaliada Trust Server Certificate Avaliada

Notas de compatibilidade

Os clientes da versão 19 que usam as configurações padrão não conseguem se conectar quando o servidor força a criptografia e usa um certificado não confiável. Atualize sua Trust Server Certificate configuração ou use um certificado confiável.

TrustServerCertificate não foi removido na versão 19. A opção ainda funciona. A versão 18 ignorou essa configuração quando Encrypt foi definida como no, mesmo quando o servidor forçou a criptografia. A versão 19 agora é avaliada TrustServerCertificate em todos os cenários criptografados.

O driver da versão 19, antes da 19.4.1, tinha um problema de instalador que poderia definir a opção registro TrustServerCertificate para no sistemas que anteriormente tinham a v18 instalada. Quando esse problema ocorreu, o driver usaria a configuração de registro mais segura, o que poderia fazer com que as opções de cadeia de conexão parecessem não ter efeito. Esse problema foi resolvido na versão 19.4.1. Uma nova instalação da v19 (sem v18 presente) sempre padrão da opção do Registro para yes. Para obter mais informações, confira Configurações modificadas do Registro.

O formato de palavra-chave difere por interface:

  • As cadeias de conexão do provedor não usam espaços: TrustServerCertificate=yes;
  • As cadeias de conexão IDataInitialize usam espaços: Trust Server Certificate=yes;

Para obter mais informações, consulte Criptografia e validação de certificado no OLE DB.

Configurações do Registro para Force Protocol Encryption

A configuração do Registro do Force Protocol Encryption usa valores numéricos que são mapeados para modos de criptografia:

Valor do Registro Modo de criptografia Description
0 Optional Criptografia somente se o servidor exigir
1 Mandatory Criptografia necessária
2 Strict Criptografia TDS 8.0

O driver usa a opção mais segura entre a configuração do Registro e a propriedade de conexão. Para locais de chave do Registro, consulte as configurações do Registro.

Alterações de nome do driver

A versão 19 dá suporte à instalação lado a lado com a versão 18. O nome do driver inclui o número de versão principal para diferenciação.

Interfase Versão 18 Versão 19
Palavra-chave do provedor MSOLEDBSQL MSOLEDBSQL19
Constante CLSID MSOLEDBSQL_CLSID MSOLEDBSQL_CLSID (atualizado em msoledbsql.h)
Nome de exibição da interface do usuário Driver do Microsoft OLE DB para SQL Server Microsoft OLE DB Driver 19 para SQL Server

Etapas da migração

  1. Inclua o cabeçalho atualizado msoledbsql.h em seu projeto.
  2. Para IDBInitialize: nenhuma alteração necessária (CLSID atualizado no cabeçalho).
  3. For IDataInitialize: Change Provider=MSOLEDBSQL to Provider=MSOLEDBSQL19.
  4. Para ferramentas de interface do usuário (SSMS, propriedades de link de dados): selecione o Driver 19 do Microsoft OLE DB para SQL Server.

Exemplos de cadeia de conexão

Versão 18 (antes):

Provider=MSOLEDBSQL;Server=myserver;Database=mydb;Trusted_Connection=yes;

Versão 19 (depois):

Provider=MSOLEDBSQL19;Server=myserver;Database=mydb;Trusted_Connection=yes;

Versão 19 com configurações de criptografia explícitas:

Provider=MSOLEDBSQL19;Server=myserver;Database=mydb;Encrypt=Mandatory;TrustServerCertificate=no;

Versão 19 com criptografia estrita (TDS 8.0):

Provider=MSOLEDBSQL19;Server=myserver;Database=mydb;Encrypt=Strict;ServerCertificate=C:\certs\server.cer;

Novas propriedades da versão 19

A versão 19 apresenta propriedades para validação de certificado aprimorada com Strict o modo de criptografia.

HostNameInCertificate (v19.0.0+)

Especifica o nome do host a ser validado no certificado TLS/SSL do servidor. Use essa propriedade quando o nome do servidor na cadeia de conexão for diferente do NOME Comum (CN) do certificado ou nome alternativo da entidade (SAN).

Interfase Propriedade
Palavra-chave do provedor HostNameInCertificate
Palavra-chave IDataInitialize Host Name In Certificate
Propriedade OLE DB SSPROP_INIT_HOST_NAME_CERTIFICATE

Observação

Essa propriedade é ignorada quando Trust Server Certificate está habilitada. Quando Encrypt=Stricto certificado é sempre validado.

ServerCertificate (v19.2.0+)

Especifica o caminho para um arquivo de certificado (formato PEM, DER ou CER) para correspondência exata de certificado. O driver compara esse certificado com o certificado do servidor durante o handshake do TLS.

Interfase Propriedade
Palavra-chave do provedor ServerCertificate
Palavra-chave IDataInitialize Server Certificate
Propriedade OLE DB SSPROP_INIT_SERVER_CERTIFICATE

Importante

ServerCertificate só pode ser usado quando Encrypt=Strict. Tentar usá-lo com Mandatory ou Optional criptografia resulta em um erro de conexão.

Métodos de autenticação preteridos

ActiveDirectoryPassword

O ActiveDirectoryPassword método de autenticação (autenticação de senha da ID do Microsoft Entra) foi preterido. Essa autenticação baseia-se na concessão ROPC (Credenciais de Senha do Proprietário de Recurso) do OAuth 2.0, que é incompatível com a MFA (autenticação multifator) e representa riscos de segurança.

Aviso

A Microsoft está se afastando desse fluxo de autenticação de alto risco para proteger os usuários contra ataques mal-intencionados. Planeje migrar para um método de autenticação mais seguro antes que essa opção seja removida. Para obter mais informações, consulte Planning for mandatory multifactor authentication for Azure.

Scenario Autenticação recomendada Palavras-chave da cadeia de conexão
Contexto interativo do usuário Autenticação multifator Authentication=ActiveDirectoryInteractive
Aplicativo em execução no Azure Identidade Gerenciada Authentication=ActiveDirectoryMSI
Serviço/daemon sem usuário Principal de Serviço Authentication=ActiveDirectoryServicePrincipal

Para obter mais informações, consulte Usar a ID do Microsoft Entra.

Resolução de problemas

Falha na conexão com o erro de validação de certificado

Sintoma: a conexão falha com um erro de validação de certificado ou uma mensagem de certificado não confiável.

Causa: a versão 19 usa Encrypt=Mandatorycomo padrão , o que requer um certificado de servidor válido. Versão 18 com o padrão Encrypt=no (não criptografado).

Soluções:

  • Recomendado: instalar um certificado confiável no servidor.
  • Somente desenvolvimento: adicione TrustServerCertificate=yes; à cadeia de conexão (não recomendado para produção).
  • Fallback: adicionar Encrypt=Optional; para restaurar o comportamento da versão 18 (reduz a segurança).

A conexão falha com "O Certificado do Servidor só pode ser usado com criptografia estrita"

Sintoma: a conexão falha quando você usa a ServerCertificate propriedade.

Causa: a ServerCertificate propriedade requer Encrypt=Strict.

Solução: remova ServerCertificate da cadeia de conexão ou altere para Encrypt=Strict;.

O aplicativo recebe VT_BOOL erro ao definir a propriedade Encrypt

Sintoma: falha na configuração SSPROP_INIT_ENCRYPT com um valor booliano.

Causa: a versão 19 alterou o tipo de propriedade de VT_BOOL para VT_BSTR.

Solução: use valores de cadeia de caracteres ("Mandatory", , "Optional""Strict", , "yes") "no"em vez de valores boolianos.

Provedor não encontrado após a atualização

Sintoma: o aplicativo falha com "Provedor não encontrado" ou erro semelhante.

Causa: a versão 19 usa um nome de provedor diferente (MSOLEDBSQL19).

Soluções:

  • Atualize sua cadeia de conexão de Provider=MSOLEDBSQL para Provider=MSOLEDBSQL19.
  • Inclua o cabeçalho atualizado msoledbsql.h se estiver usando IDBInitialize o CLSID.