Partilhar via


Atualizar uma Aplicação para o Driver OLE DB para SQL Server a partir do MDAC

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Base de dados SQL no Microsoft Fabric

Baixar driver OLE DB

Existem várias diferenças entre o OLE DB Driver for SQL Server e os Microsoft Data Access Components (MDAC); a partir do Windows Vista, os componentes de acesso a dados passam a chamar-se Componentes de Acesso a Dados do Windows (ou CAD do Windows). Embora ambos forneçam acesso nativo a dados a bases de dados SQL Server, o OLE DB Driver para SQL Server foi concebido para expor as novas funcionalidades do SQL Server, mantendo simultaneamente a compatibilidade retroativa com versões anteriores.

Além disso, embora o MDAC contenha componentes para usar OLE DB, ODBC e ActiveX Data Objects (ADO), O OLE DB Driver para SQL Server implementa apenas o OLE DB (embora o ADO possa aceder à funcionalidade do OLE DB Driver para SQL Server).

O Driver OLE DB para SQL Server e MDAC diferem nas seguintes áreas:

  • Utilizadores que usam ADO para aceder ao Driver OLE DB para SQL Server podem encontrar menos funcionalidades de filtragem do que quando acederam ao fornecedor SQL OLE DB.

  • Se uma aplicação ADO usar o Driver OLE DB para SQL Server e tentar atualizar uma coluna computada, será reportado um erro. Com o MDAC, a atualização foi aceite mas ignorada.

  • O Driver OLE DB para SQL Server é um único ficheiro de biblioteca de ligação dinâmica (DLL) autónomo. As interfaces expostas publicamente foram mantidas ao mínimo, tanto para facilitar a distribuição, como para limitar a exposição à segurança.

  • Apenas interfaces OLE DB são suportadas.

  • O Driver OLE DB para nomes SQL Server é diferente dos nomes usados com MDAC.

  • A funcionalidade acessível ao utilizador fornecida pelos componentes MDAC está disponível ao utilizar o Driver OLE DB para SQL Server. Isto inclui, mas não se limita a, o seguinte: pooling de ligações, suporte ADO e suporte ao cursor do cliente. Quando alguma destas funcionalidades é utilizada, o OLE DB Driver para SQL Server fornece apenas conectividade à base de dados. O MDAC fornece funcionalidades como rastreio, controlos de gestão e contadores de desempenho.

  • As aplicações podem usar os serviços principais OLE DB com o OLE DB Driver para SQL Server, mas se usarem o motor de cursores OLE DB, devem usar a opção de compatibilidade de tipos de dados para evitar quaisquer problemas potenciais que possam surgir porque o motor de cursor não tem conhecimento dos novos tipos de dados do SQL Server 2005 (9.x).

  • O OLE DB Driver para SQL Server suporta acesso a bases de dados SQL Server anteriores.

  • O Driver OLE DB para SQL Server não contém integração com XML. O Driver OLE DB para SQL Server suporta SELECT ... PARA consultas XML, mas não suporta qualquer outra funcionalidade XML. No entanto, o OLE DB Driver para SQL Server suporta o tipo de dado xml introduzido no SQL Server 2005 (9.x).

  • O OLE DB Driver para SQL Server suporta a configuração de bibliotecas de rede do lado do cliente usando apenas atributos de cadeia de ligação. Se precisar de uma configuração mais completa da biblioteca de rede, deve usar o SQL Server Configuration Manager.

  • As cadeias de ligação MDAC permitem um valor booleano (verdadeiro) para a palavra-chave Trusted_Connection . Um driver OLE DB para a cadeia de ligação SQL Server deve usar sim ou não.

  • Ocorreram pequenas alterações nos avisos e erros. Os avisos e erros devolvidos pelo servidor mantêm agora a mesma gravidade quando passados para o OLE DB Driver para SQL Server. Deve certificar-se de que testou cuidadosamente a sua aplicação caso dependa de detectar avisos e erros específicos.

  • O Driver OLE DB para SQL Server tem uma verificação de erros mais rigorosa do que o MDAC, o que significa que algumas aplicações que não cumprem estritamente as especificações do OLE DB podem comportar-se de forma diferente. Por exemplo, o fornecedor SQLOLEDB não aplicou a regra de que os nomes dos parâmetros devem começar por '@' para os parâmetros do resultado, mas o OLE DB Driver para SQL Server aplica.

  • O Driver OLE DB para SQL Server comporta-se de forma diferente do MDAC relativamente a ligações falhadas. Por exemplo, o MDAC devolve valores de propriedades em cache para uma ligação que falhou, enquanto o OLE DB Driver para SQL Server reporta um erro à aplicação que chama.

  • O OLE DB Driver para SQL Server não gera eventos do Visual Studio Analyzer, mas sim gera eventos de rastreamento no Windows.

  • O Driver OLE DB para SQL Server não pode ser usado com perfmon. O Perfmon é uma ferramenta para Windows que só pode ser usada com DSNs que utilizam o driver MDAC SQLODBC incluído no Windows.

  • Quando o Driver OLE DB para SQL Server está ligado ao SQL Server 2005 (9.x) e versões posteriores, o erro de servidor 16947 é devolvido como SQL_ERROR. Este erro ocorre quando uma atualização ou eliminação posicionada falha em atualizar ou eliminar uma linha. Com MDAC, ao ligar-se a qualquer versão do SQL Server, o erro de servidor 16947 é devolvido como aviso (SQL_SUCCESS_WITH_INFO).

  • O Driver OLE DB para SQL Server implementa a interface IDBDataSourceAdmin , que é uma interface OLE DB opcional que não tinha sido implementada anteriormente, mas apenas o método CreateDataSource desta interface opcional é implementado. Esse recurso será removido em uma versão futura do SQL Server. Evite usar esse recurso em novos trabalhos de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso.

  • O Driver OLE DB para SQL Server devolve sinónimos nos conjuntos de linhas TABLES e TABLE_INFO de esquema, com TABLE_TYPE definido como SYNONYM.

  • Valores de retorno do tipo de dados varchar(max),nvarchar(max), varbinary(max), xml, udt ou outros tipos de objetos grandes não podem ser devolvidos às versões do cliente anteriores ao SQL Server 2005 (9.x). Se desejar usar estes tipos como valores de retorno, deve usar o Driver OLE DB para SQL Server.

  • O MDAC permite que as seguintes instruções sejam executadas no início de transações manuais e implícitas, mas o OLE DB Driver para SQL Server não o permite. Devem ser executadas em modo de autocommit.

    • Todas as operações de texto completo (DDL de índice e catálogo)

    • Todas as operações de base de dados (criar base de dados, alterar base de dados, descartar base de dados)

    • Reconfigurar

    • Encerramento

    • Matar

    • Backup

  • Quando as aplicações MDAC se ligam ao SQL Server, os tipos de dados introduzidos no SQL Server 2005 (9.x) aparecerão como tipos de dados compatíveis com SQL Server 2000 (8.x), conforme mostrado na tabela seguinte.

    Tipo SQL Server 2005 Tipo SQL Server 2000
    varchar(max) texto
    nvarchar(max) ntext
    varbinary(max) image
    UDT Varbinary
    xml ntext

    Este mapeamento de tipos afeta os valores devolvidos para os metadados das colunas. Por exemplo, uma coluna de texto tem um tamanho máximo de 2.147.483.647, mas o OLE DB Driver para SQL Server reporta o tamanho máximo das colunas varchar(max ) como 2.147.483.647 ou -1, dependendo da plataforma.

  • O OLE DB Driver para SQL Server permite ambiguidade nas strings de ligação (por exemplo, algumas palavras-chave podem ser especificadas mais do que uma vez, e palavras-chave conflitantes podem ser permitidas com resolução baseada na posição ou precedência) por razões de compatibilidade retroativa. Futuras versões do OLE DB Driver para SQL Server podem não permitir ambiguidade nas strings de ligação. É uma boa prática ao modificar aplicações para usar o OLE DB Driver para SQL Server para eliminar qualquer ambiguidade de dependência da cadeia de ligação.

  • Se usar uma chamada OLE DB para iniciar transações, existe uma diferença de comportamento entre o OLE DB Driver for SQL Server e MDAC; as transações começarão imediatamente com o OLE DB Driver para SQL Server, mas as transações começarão após o primeiro acesso à base de dados usando MDAC. Isto pode afetar o comportamento dos procedimentos armazenados e lotes porque o SQL Server exige que @@TRANCOUNT seja o mesmo após a execução de um batch ou procedimento armazenado que era quando o batch ou procedimento armazenado começou.

  • Com o OLE DB Driver para SQL Server, ITransactionLocal::BeginTransaction fará com que uma transação seja iniciada imediatamente. Com o MDAC, o início da transação era adiado até que a aplicação executasse uma instrução que exigia uma transação em modo de transação implícita. Para obter mais informações, consulte SET IMPLICIT_TRANSACTIONS (Transact-SQL).

Tanto o OLE DB Driver para SQL Server como o MDAC suportam isolamento de transações de leitura e commit usando versionamento de linhas, mas apenas o OLE DB Driver para SQL Server suporta isolamento de transações instantâneas. (Em termos de programação, o isolamento de transações de leitura comprometida usando versionamento de linhas é o mesmo que a transação read-committed.)

Ver também

Construção de Aplicações com o Driver OLE DB para SQL Server