Partilhar via


Atualizando um aplicativo do MDAC para o SQL Server Native Client

Há várias diferenças entre o SQL Server Native Client e o MDAC (Microsoft Data Access Components; a partir do Windows Vista, os componentes de acesso a dados agora são chamados de Componentes do Windows Data Access ou Windows DAC). Embora ambos forneçam acesso a dados nativos a bancos de dados SQL Server, SQL Server Native Client foi projetado especificamente para expor os novos recursos do SQL Server 2005 e, ao mesmo tempo, manter a compatibilidade com versões anteriores.

As informações neste tópico ajudam a atualizar seu aplicativo MDAC (ou Windows DAC) para que ele esteja atualizado com a versão do SQL Server Native Client incluída no SQL Server 2005. Para ajudá-lo a tornar esse aplicativo atual com a versão do SQL Server Native Client que foi enviada no SQL Server 2014, consulte Atualizando um aplicativo do SQL Server 2005 Native Client.

Além disso, embora o MDAC contenha componentes para usar OLE DB, ODBC e ActiveX Data Objects (ADO), SQL Server Native Client implementa apenas OLE DB e ODBC (embora o ADO possa acessar a funcionalidade de SQL Server Native Client).

SQL Server Native Client e MDAC diferem nas outras áreas a seguir:

  • Os usuários que usam o ADO para acessar um provedor de SQL Server Native Client podem encontrar menos funcionalidade de filtragem do que quando acessaram um provedor OLE DB do SQL.

  • Se um aplicativo ADO usar SQL Server Native Client e tentar atualizar uma coluna computada, um erro será relatado. Com o MDAC, a atualização foi aceita, mas ignorada.

  • SQL Server Native Client é um único arquivo DLL (biblioteca de vínculo dinâmico) independente. As interfaces expostas publicamente foram mantidas no mínimo, tanto para facilitar a distribuição quanto para limitar a exposição de segurança.

  • Só há suporte para interfaces OLE DB e ODBC.

  • O SQL Server Native Client provedor OLE DB e os nomes de driver ODBC são diferentes daqueles usados com o MDAC.

  • A funcionalidade acessível pelo usuário fornecida pelos componentes do MDAC está disponível ao usar SQL Server Native Client. Isso inclui, mas não se limita a, o seguinte: pool de conexões, suporte ao ADO e suporte ao cursor do cliente. Quando qualquer um desses recursos é usado, SQL Server Native Client fornece apenas conectividade de banco de dados. O MDAC fornece funcionalidades como, por exemplo, rastreamento, controles de gerenciamento e contadores de desempenho.

  • Os aplicativos podem usar os principais serviços do OLE DB com SQL Server Native Client, mas se estiverem usando o mecanismo de cursor OLE DB, eles deverão usar a opção de compatibilidade de tipo de dados para evitar possíveis problemas que possam surgir porque o mecanismo de cursor não tem conhecimento dos novos tipos de dados SQL Server 2005.

  • SQL Server Native Client dá suporte ao acesso a bancos de dados SQL Server anteriores.

  • SQL Server Native Client não contém integração XML. SQL Server Native Client dá suporte a SELECT... Consultas FOR XML, mas não dá suporte a nenhuma outra funcionalidade XML. No entanto, SQL Server Native Client dá suporte ao xml tipo de dados introduzido no SQL Server 2005.

  • SQL Server Native Client dá suporte à configuração de bibliotecas de rede do lado do cliente usando apenas atributos de cadeia de conexão. Caso precise de uma configuração de biblioteca de rede mais completa, você deve usar o SQL Server Configuration Manager.

  • SQL Server Native Client não é compatível com odbcbcp.dll. Os aplicativos que usam APIs ODBC e bcp devem ser recriados para vincular ao sqlncli11.lib para usar SQL Server Native Client.

  • SQL Server Native Client não tem suporte do provedor Microsoft OLE DB para ODBC (MSDASQL). Se você estiver usando o driver SQLODBC do MDAC com o driver SQLODBC do MSDASQL ou MDAC com o ADO, use o OLE DB no SQL Server Native Client..

  • As cadeias de conexão do MDAC permitem um valor booliano (true) para o palavra-chave Trusted_Connection. Uma cadeia de conexão SQL Server Native Client deve usar yes ou não.

  • As alterações menores ocorreram por conta de avisos e erros. Avisos e erros retornados pelo servidor agora mantêm a mesma gravidade quando passados para SQL Server Native Client. Você não deve se esquecer de testar integralmente o aplicativo caso dependa da interceptação de avisos e erros específicos.

  • SQL Server Native Client tem uma verificação de erro mais rigorosa do que o MDAC, o que significa que alguns aplicativos que não estão em conformidade estritamente com as especificações ODBC e OLE DB podem se comportar de forma diferente. Por exemplo, o provedor SQLOLEDB não impõe a regra de que os nomes de parâmetro devem começar com '@' para parâmetros de resultado, mas o provedor OLE DB SQL Server Native Client faz.

  • SQL Server Native Client se comporta de forma diferente do MDAC em relação a conexões com falha. Por exemplo, o MDAC retorna valores de propriedade armazenados em cache para uma conexão que falhou, enquanto SQL Server Native Client relata um erro ao aplicativo de chamada.

  • SQL Server Native Client não gera eventos do Analisador do Visual Studio, mas gera eventos de rastreamento do Windows.

  • SQL Server Native Client não pode ser usado com perfmon. Perfmon é uma ferramenta do Windows que pode ser usada apenas com DSNs que usem o driver SQLODBC do MDAC incluído no Windows.

  • Quando SQL Server Native Client está conectado ao SQL Server 2005 e versões posteriores, o erro do servidor 16947 é retornado como um SQL_ERROR. Esse erro ocorre quando uma atualização ou exclusão posicionada não atualiza ou exclui uma linha. Com o MDAC, ao estabelecer conexão com qualquer versão do SQL Server, o erro de servidor 16947 é retornado como um aviso (SQL_SUCCESS_WITH_INFO).

  • SQL Server Native Client implementa a interface IDBDataSourceAdmin, que é uma interface OLE DB opcional que não foi implementada anteriormente, mas apenas o método CreateDataSource dessa interface opcional é implementado. Esse recurso será removido em uma versão futura do Microsoft SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam.

  • O provedor OLE DB SQL Server Native Client retorna sinônimos nos conjuntos de linhas TABLES e TABLE_INFO esquema, com TABLE_TYPE definido como SYNONYM.

  • Os valores retornados do tipo varchar(max)de dados , nvarchar(max), varbinary(max), xml, udt, ou outros tipos de objeto grandes não podem ser retornados para versões de cliente anteriores a SQL Server 2005. Se você quiser usar esses tipos como valores retornados, deverá usar SQL Server Native Client.

  • O MDAC permite que as instruções a seguir sejam executadas no início de transações manuais e implícitas, mas SQL Server Native Client não. Elas devem ser executadas no modo de confirmação automática.

    • Todas as operações de texto completo (indexar e catalogar DDL)

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

    • Reconfigurar

    • Shutdown

    • Encerrar

    • Backup

  • Quando os aplicativos MDAC se conectam a SQL Server, os tipos de dados introduzidos no SQL Server 2005 aparecerão como SQL Server tipos de dados compatíveis com 2000, conforme mostrado na tabela a seguir.

    Tipo SQL Server 2005 Tipo do SQL Server 2000
    varchar(max) text
    nvarchar(max) ntext
    varbinary(max) image
    udt varbinary
    xml ntext

    Esse mapeamento de tipo afeta os valores retornados para metadados da coluna. Por exemplo, uma text coluna tem um tamanho máximo de 2.147.483.647, mas SQL Server Native Client ODBC relata o tamanho máximo de varchar(max) colunas como SQL_SS_LENGTH_UNLIMITED e SQL Server Native Client OLE DB relata o tamanho máximo das colunas como 2.147.483.647 ou -1, dependendo da varchar(max) plataforma.

  • SQL Server Native Client permite ambiguidade em cadeias de conexão (por exemplo, algumas palavras-chave podem ser especificadas mais de uma vez e palavras-chave conflitantes podem ser permitidas com resolução com base na posição ou precedência) por motivos de compatibilidade com versões anteriores. Versões futuras de SQL Server Native Client podem não permitir ambiguidade em cadeias de conexão. É uma boa prática ao modificar aplicativos para usar SQL Server Native Client para eliminar qualquer dependência da ambiguidade da cadeia de conexão.

  • Se você usar uma chamada ODBC ou OLE DB para iniciar transações, haverá uma diferença no comportamento entre SQL Server Native Client e MDAC; as transações começarão imediatamente com SQL Server Native Client, mas as transações começarão após o primeiro acesso ao banco de dados usando o MDAC. Isso pode afetar o comportamento de procedimentos armazenados e lotes porque o SQL Server exige que @@TRANCOUNT seja a mesma de quando o lote o ou procedimento armazenado começou após a conclusão da execução.

  • Com SQL Server Native Client, ITransactionLocal::BeginTransaction fará com que uma transação seja iniciada imediatamente. Com o MDAC, o início da transação foi atrasado até que o aplicativo executasse uma instrução que exigia uma transação em modo de transação implícita. Para obter mais informações, confira SET IMPLICIT_TRANSACTIONS (Transact-SQL).

  • Você pode encontrar erros ao usar SQL Server Native Client driver com System.Data.Odbc para acessar um computador servidor SQL Server que expõe novos tipos de dados ou recursos específicos SQL Server. System.Data.Odbc fornece uma implementação ODBC genérica e, posteriormente, não expõe funcionalidades ou extensões específicas do fornecedor. (O driver SQL Server Native Client é atualizado para dar suporte nativo aos recursos de SQL Server mais recentes.) Para solucionar esse problema, você pode reverter para o MDAC ou migrar para System.Data.SqlClient.

O SQL Server Native Client e o MDAC dão suporte ao isolamento de transação confirmada de leitura usando controle de versão de linha, mas apenas SQL Server Native Client dá suporte instantâneo isolamento de transação. (Em termos de programação, o isolamento de transação de leitura confirmada por meio do controle de versão de linha é igual à transação de leitura confirmada.)

Consulte Também

Criando aplicativos com o SQL Server Native Client