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.
Há várias diferenças entre o SQL Server Native Client e o Microsoft Data Access Components (MDAC; 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 aos bancos de dados do SQL Server, o 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 estar atualizado com a versão do SQL Server Native Client que foi 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), o SQL Server Native Client implementa apenas OLE DB e ODBC (embora o ADO possa acessar a funcionalidade do SQL Server Native Client).
O SQL Server Native Client e o MDAC diferem nas outras áreas a seguir:
Os usuários que usam o ADO para acessar um provedor do 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 o SQL Server Native Client e tentar atualizar uma coluna computada, um erro será relatado. Com o MDAC, a atualização foi aceita, mas ignorada.
O SQL Server Native Client é um único arquivo DLL (biblioteca de link dinâmico) independente. As interfaces expostas publicamente foram mantidas no mínimo, tanto para facilitar a distribuição quanto para limitar a exposição à segurança.
Há suporte apenas para interfaces OLE DB e ODBC.
O provedor OLE DB do SQL Server Native Client e os nomes de driver ODBC são diferentes daqueles usados com MDAC.
A funcionalidade acessível pelo usuário fornecida pelos componentes do MDAC está disponível ao usar o SQL Server Native Client. Isso inclui, mas não se limita ao seguinte: pool de conexões, suporte ao ADO e suporte ao cursor do cliente. Quando qualquer um desses recursos é usado, o SQL Server Native Client fornece apenas conectividade de banco de dados. O MDAC fornece funcionalidades como rastreamento, controles de gerenciamento e contadores de desempenho.
Os aplicativos podem usar serviços principais do OLE DB com o SQL Server Native Client, mas se estiverem usando o mecanismo de cursor OLE DB, eles devem 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 do SQL Server 2005.
O SQL Server Native Client dá suporte ao acesso a bancos de dados anteriores do SQL Server.
O SQL Server Native Client não contém integração XML. O SQL Server Native Client dá suporte a SELECT... Consultas FOR XML, mas não dá suporte a nenhuma outra funcionalidade XML. No entanto, o SQL Server Native Client dá suporte ao
xmltipo de dados introduzido no SQL Server 2005.O SQL Server Native Client dá suporte à configuração de bibliotecas de rede do lado do cliente usando apenas atributos de cadeia de conexão. Se você precisar de uma configuração de biblioteca de rede mais completa, deverá usar o SQL Server Configuration Manager.
O 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 o SQL Server Native Client.
O SQL Server Native Client não tem suporte do provedor Microsoft OLE DB para ODBC (MSDASQL). Se você estiver usando o driver MDAC SQLODBC com o driver MSDASQL ou MDAC SQLODBC com a ADO, use OLE DB no SQL Server Native Client..
As cadeias de conexão MDAC permitem um valor booliano (
true) para a palavra-chave Trusted_Connection . Uma cadeia de conexão do SQL Server Native Client deve ser usadayesou não.Pequenas alterações ocorreram em avisos e erros. Os avisos e erros retornados pelo servidor agora mantêm a mesma gravidade quando passados para o SQL Server Native Client. Você deve garantir que testou completamente seu aplicativo se depender de interceptar avisos e erros específicos.
O 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 do SQL Server Native Client faz.
O SQL Server Native Client se comporta de forma diferente do MDAC em relação às conexões com falha. Por exemplo, o MDAC retorna valores de propriedade armazenados em cache para uma conexão que falhou, enquanto o SQL Server Native Client relata um erro ao aplicativo de chamada.
O SQL Server Native Client não gera eventos do Analisador do Visual Studio, mas gera eventos de rastreamento do Windows.
O SQL Server Native Client não pode ser usado com o perfmon. O Perfmon é uma ferramenta do Windows que só pode ser usada com DSNs que usam o driver SQLODBC do MDAC incluído no Windows.
Quando o 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 falha ao atualizar ou excluir uma linha. Com o MDAC ao se conectar a qualquer versão do SQL Server, o erro do servidor 16947 é retornado como um aviso (SQL_SUCCESS_WITH_INFO).
O 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 um novo trabalho de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso.
O provedor OLE DB do SQL Server Native Client retorna sinônimos nos conjuntos de linhas de esquema TABLES e TABLE_INFO, com TABLE_TYPE definido como SYNONYM.
Os valores retornados do tipo
varchar(max)de dados,nvarchar(max), ,varbinary(max)xml,udtou outros tipos de objeto grandes não podem ser retornados para versões de cliente anteriores ao SQL Server 2005. Se você quiser usar esses tipos como valores retornados, deverá usar o 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 o SQL Server Native Client não. Eles devem ser executados no modo de confirmação automática.
Todas as operações de texto completo (DDL de índice e catálogo)
Todas as operações de banco de dados (criar banco de dados, alterar banco de dados, remover banco de dados)
Reconfigurar
Desligamento
Matar
Cópia de segurança
Quando aplicativos MDAC se conectam ao SQL Server, os tipos de dados introduzidos no SQL Server 2005 aparecerão como tipos de dados compatíveis com o SQL Server 2000, conforme mostrado na tabela a seguir.
Tipo SQL Server 2005 Tipo do SQL Server 2000 varchar(max)textnvarchar(max)ntextvarbinary(max)imageudtvarbinaryxmlntextEsse mapeamento de tipo afeta os valores retornados para metadados de coluna. Por exemplo, uma
textcoluna tem um tamanho máximo de 2.147.483.647, mas o SQL Server Native Client ODBC relata o tamanho máximo devarchar(max)colunas como SQL_SS_LENGTH_UNLIMITED e o SQL Server Native Client OLE DB relata o tamanho máximo devarchar(max)colunas como 2.147.483.647 ou -1, dependendo da plataforma.O 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 do SQL Server Native Client podem não permitir ambiguidade nas cadeias de conexão. É uma boa prática ao modificar aplicativos usar o 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 o SQL Server Native Client e o MDAC; as transações começarão imediatamente com o 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 requer que @@TRANCOUNT sejam iguais depois que um lote ou procedimento armazenado concluir a execução como era quando o lote ou o procedimento armazenado foi iniciado.
Com o 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 adiado até que o aplicativo executasse uma instrução que exigia uma transação no modo de transação implícita. Para obter mais informações, confira SET IMPLICIT_TRANSACTIONS (Transact-SQL).
Você pode encontrar erros ao usar o driver do SQL Server Native Client com System.Data.Odbc para acessar um computador do SQL Server Server que expõe novos tipos de dados ou recursos específicos do 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 do SQL Server Native Client é atualizado para dar suporte nativo aos recursos mais recentes do SQL Server.) 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ções confirmadas por leitura usando o controle de versão de linha, mas apenas o SQL Server Native Client dá suporte ao isolamento de transações de instantâneo. (Em termos de programação, o isolamento de transação confirmada de leitura usando o controle de versão de linha é o mesmo que transação confirmada por leitura.).