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.
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
- Inclua o cabeçalho atualizado
msoledbsql.hem seu projeto. - Para
IDBInitialize: nenhuma alteração necessária (CLSID atualizado no cabeçalho). - For
IDataInitialize: ChangeProvider=MSOLEDBSQLtoProvider=MSOLEDBSQL19. - 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.
Alternativas recomendadas
| 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=MSOLEDBSQLparaProvider=MSOLEDBSQL19. - Inclua o cabeçalho atualizado
msoledbsql.hse estiver usandoIDBInitializeo CLSID.
Conteúdo relacionado
- Driver do Microsoft OLE DB para SQL Server
- Uso de palavras-chave de cadeia de conexão com o Driver do OLE DB para SQL Server
- Criptografia e validação de certificado no OLE DB
- Configuração do UDL (Universal Data Link)
- Caixa de diálogo Logon do SQL Server (OLE DB)
- Propriedades de inicialização e autorização
- Configurações do registro