Configurando provedores de OLE DB para consultas distribuídas

O SQL Server fornece várias opções avançadas para gerenciar consultas distribuídas. Algumas das opções são gerenciadas no nível do provedor e outras, no nível do servidor vinculado, por meio de sp_serveroption. Somente administradores de sistema experientes devem configurar essas opções avançadas.

Opções de provedor de OLE DB

As opções de provedor de OLE DB para gerenciamento de consultas distribuídas podem ser definidas no SQL Server Management Studio. No Pesquisador de Objetos, clique com o botão direito do mouse no nome do provedor e selecione Propriedades. A tabela a seguir descreve as opções de provedor disponíveis.

Opção de provedor

Descrição

DynamicParameters

Se diferente de zero, indica que o provedor permite a sintaxe de marcador de parâmetro '?' para consultas com parâmetros. Só defina esta opção se houver suporte no provedor para a interface ICommandWithParameters e para um '?' como marcador de parâmetro. Definir essa opção permite ao SQL Server executar consultas com parâmetros em relação ao provedor. Executar consultas com parâmetros em relação ao provedor pode resultar em melhor desempenho para certas consultas.

NestedQueries

Se diferente de zero, indica que o provedor permite instruções SELECT aninhadas na cláusula FROM. Definir esta opção permite ao SQL Server delegar certas consultas ao provedor que requerem instruções SELECT aninhadas na cláusula FROM.

LevelZeroOnly

Se diferente de zero, somente as interfaces OLE DB de nível 0 são invocadas em relação ao provedor.

AllowInProcess

Se diferente de zero, o SQL Server permite que seja criada uma instância no provedor como servidor em processo. Quando esta opção não estiver definida no Registro, o comportamento padrão será criar uma instância no provedor fora do processo do SQL Server. Criar uma instância no provedor fora do processo do SQL Server ajuda a proteger o processo do SQL Server contra erros no provedor. Quando uma instância é criada no provedor fora do processo do SQL Server, não são permitidas atualizações ou inserções com referências a colunas LOB (varchar(max), nvarchar(max), varbinary(max), text, ntext ou image).

O provedor de OLE DB SQL Server Native Client não pode ter instâncias criadas fora do processo. Ocorrerá um erro se você configurar o provedor de OLE DB SQL Server Native Client para execução fora do processo e tentar executar uma consulta distribuída.

NonTransactedUpdates

Se diferente de zero, o SQL Server permitirá atualizações, ainda que ITransactionLocal não esteja disponível. Se esta opção estiver habilitada, as atualizações em relação ao provedor não serão recuperáveis, pois o provedor não possui suporte a transações.

IndexAsAccessPath

Se diferente de zero, o SQL Server tenta usar índices do provedor para buscar dados. Por padrão, índices só são usados para metadados e nunca são abertos.

DisallowAdhocAccess

Se um valor diferente de zero for definido, o SQL Server não permitirá acesso ad hoc pelas funções OPENROWSET e OPENDATASOURCE em relação ao provedor OLE DB. Quando esta opção não está definida, o SQL Server também não permite acesso ad hoc.

Esta opção controla a capacidade de execução de consultas ad hoc da parte dos administradores. Administradores não são afetados por esta opção.

SqlServerLike

Se diferente de zero, o provedor dá suporte ao operador LIKE conforme implementado no SQL Server. Quando esta opção estiver definida, o SQL Server irá considerar enviar por push ao provedor as consultas que possuem predicados LIKE em relação a colunas remotas, como parte da avaliação da consulta distribuída.

As opções de provedor de OLE DB operam ao nível de provedor. Quando efetuadas para um provedor, as configurações se aplicam a todas as definições de servidor vinculado que estejam utilizando o mesmo provedor de OLE DB.

Opções de servidor vinculado

Além das opções em nível de servidor descritas anteriormente, várias opções de gerenciamento de consultas distribuídas estão disponíveis no nível de servidor vinculado por meio de sp_serveroption. Ao contrário das opções em nível de provedor, as opções em nível de servidor afetam apenas o comportamento em relação ao servidor vinculado especificado.

A tabela a seguir descreve as várias opções de servidor vinculado.

Opções de servidor vinculado

Descrição

use remote collation

Se definido como true, o SQL Server usa as informações de agrupamento das colunas de caracteres do servidor vinculado. Se o servidor vinculado for uma instância do SQL Server, as informações de agrupamento serão derivadas automaticamente da interface do provedor de OLE DB do SQL Server. Se o servidor vinculado não for uma instância do SQL Server, o SQL Serverusará o conjunto de agrupamento da opção collation name.

Se definido como false, o SQL Server interpretará os dados de caracteres do servidor vinculado especificado no agrupamento padrão da instância de SQL Server local.

collation name

Especifica o agrupamento a ser utilizado para dados de caracteres do servidor vinculado, se use remote collation estiver definido como true. Esta opção será ignorada se use remote collation estiver definido como false ou se o servidor vinculado for uma instância do SQL Server.

connection timeout

Especifica o valor, em segundos, do tempo limite a ser utilizado quando o SQL Server tentar fazer uma conexão com o servidor vinculado. Se esta opção não estiver definida, o valor atual definido para a opção de configuração global remote login timeout será usado, por padrão.

lazy schema validation

Se esta opção estiver definida como false (padrão), o SQL Server verificará alterações de esquema ocorridas desde a compilação nas tabelas remotas. Esta verificação acontece antes da execução da consulta. Se houver uma alteração no esquema, o SQL Server recompilará a consulta com o novo esquema.

Se esta opção estiver definida como true, a verificação de esquema das tabelas remotas será retardada até a execução. Isso pode fazer com que uma consulta distribuída falhe com erro, caso o esquema de uma tabela remota tenha sido alterado entre a compilação e a execução da consulta.

Convém definir esta opção como true quando exibições particionadas distribuídas forem utilizadas em relação a um servidor vinculadas que execute o SQL Server. Uma tabela especificada que participe da exibição particionada não pode ser realmente usada em uma execução específica de uma consulta em relação a uma exibição. Portanto, adiar a validação de esquema pode melhorar o desempenho.