Configurazione dei provider OLE DB per le query distribuite

In SQL Server sono disponibili varie opzioni avanzate per la gestione delle query distribuite. Alcune opzioni vengono gestite a livello del provider, mentre altre vengono gestite a livello del server collegato tramite sp_serveroption. La configurazione di queste opzioni è riservata ad amministratori di sistema esperti.

Opzioni del provider OLE DB

È possibile impostare le opzioni del provider OLE DB per la gestione delle query distribuite in SQL Server Management Studio. In Esplora oggetti fare clic con il pulsante destro del mouse sul nome del provider e scegliere Proprietà. Nella tabella seguente vengono descritte le opzioni disponibili del provider.

Opzione del provider

Descrizione

DynamicParameters

Un valore diverso da zero indica che il provider consente la sintassi con l'indicatore di parametro '?' nel caso di query con parametri. Impostare questa opzione solo se il provider supporta l'interfaccia ICommandWithParameters e l'utilizzo di '?' come indicatore di parametro. L'impostazione di questa opzione consente a SQL Server di eseguire query con parametri sul provider, ottenendo in tal modo prestazioni migliori per determinate query.

NestedQueries

Un valore diverso da zero indica che il provider consente l'utilizzo di istruzioni SELECT nidificate nella clausola FROM. L'impostazione di questa opzione consente a SQL Server di delegare al provider determinate query che richiedono la nidificazione di istruzioni SELECT nella clausola FROM.

LevelZeroOnly

Un valore diverso da zero indica che per il provider vengono richiamate solo le interfacce OLE DB di livello 0.

AllowInProcess

Un valore diverso da zero indica che SQL Server consente la creazione di un'istanza del provider come server in-process. Quando l'opzione non è impostata nel Registro di sistema, per impostazione predefinita l'istanza del provider viene creata al di fuori del processo SQL Server. La creazione dell'istanza del provider al di fuori del processo SQL Server consente di proteggere il processo SQL Server dagli errori del provider. Quando l'istanza del provider viene creata al di fuori del processo SQL Server, gli aggiornamenti o gli inserimenti che fanno riferimento alle colonne LOB (varchar(max), nvarchar(max), varbinary(max), text, ntext o image) non sono consentiti.

Non è possibile creare un'istanza del provider OLE DB di SQL Server Native Client out-of-process. Se si imposta il provider OLE DB di SQL Server Native Client per l'esecuzione out-of-process e si tenta di eseguire una query distribuita, viene generato un errore.

NonTransactedUpdates

Un valore diverso da zero indica che SQL Server consente gli aggiornamenti, anche se ITransactionLocal non è disponibile. Se questa opzione è attivata, gli aggiornamenti sul provider non sono recuperabili, in quanto il provider non supporta le transazioni.

IndexAsAccessPath

Un valore diverso da zero indica che SQL Server tenta di recuperare i dati tramite gli indici del provider. Per impostazione predefinita, gli indici vengono utilizzati solo per i metadati e non vengono mai aperti.

DisallowAdhocAccess

Se viene impostato un valore diverso da zero, SQL Server non consente l'accesso ad hoc al provider OLE DB tramite le funzioni OPENROWSET e OPENDATASOURCE. Anche quando l'opzione non è impostata, SQL Server non consente l'accesso ad hoc.

L'opzione controlla la possibilità degli utenti che non siano amministratori di eseguire query ad hoc. L'opzione non ha effetto sugli amministratori.

SqlServerLike

Un valore diverso da zero indica che il provider supporta l'operatore LIKE implementato in SQL Server. Se l'opzione è impostata, SQL Server considererà il push al provider delle query con predicati LIKE sulle colonne remote come un processo nell'ambito della valutazione della query distribuita.

Le opzioni del provider OLE DB sono attive a livello del provider. Quando si impostano opzioni per un provider, le impostazioni vengono applicate a tutte le definizioni del server collegato che utilizzano lo stesso provider OLE DB.

Opzioni del server collegato

Oltre alle opzioni a livello del provider descritte in precedenza, tramite sp_serveroption sono disponibili varie opzioni per la gestione delle query distribuite a livello del server collegato. A differenza delle opzioni a livello del provider, le opzioni a livello del server influiscono solo sul funzionamento basato sul server collegato specificato.

Nella tabella seguente vengono descritte le varie opzioni del server collegato.

Opzioni del server collegato

Descrizione

use remote collation

Se l'opzione è impostata su true, SQL Server utilizza le informazioni relative alle regole di confronto delle colonne di tipo carattere derivate dal server collegato. Se il server collegato è un'istanza di SQL Server, le informazioni relative alle regole di confronto vengono derivate automaticamente dall'interfaccia del provider OLE DB per SQL Server. Se il server collegato non è un'istanza di SQL Server, SQL Server utilizza le regole di confronto impostate nell'opzione collation name.

Se l'opzione è impostata su false, SQL Server interpreta i dati di tipo carattere del server collegato specificato nelle regole di confronto predefinite dell'istanza locale di SQL Server.

collation name

Specifica le regole di confronto utilizzate per i dati di tipo carattere del server collegato se l'opzione use remote collation è impostata su true. Questa opzione viene ignorata se l'opzione use remote collation è impostata su false o se il server collegato è un'istanza di SQL Server.

connection timeout

Specifica il valore di timeout, in secondi, utilizzato quando SQL Server tenta di stabilire una connessione al server collegato. Se l'opzione non è impostata, per impostazione predefinita viene utilizzato il valore dell'opzione di configurazione globale remote login timeout.

lazy schema validation

Se l'opzione è impostata sul valore predefinito false, SQL Server controlla se sono state apportate modifiche allo schema dopo la compilazione nelle tabelle remote. Tale controllo viene eseguito prima dell'esecuzione della query. In presenza di modifiche allo schema, SQL Server ricompila la query con il nuovo schema.

Se l'opzione è impostata su true, il controllo dello schema delle tabelle remote viene rimandato al momento dell'esecuzione. Ciò potrebbe causare l'esito negativo di una query distribuita con conseguente restituzione di un errore nel caso in cui lo schema di una tabella remota sia stato modificato tra il momento della compilazione e il momento dell'esecuzione della query.

È consigliabile impostare l'opzione su true quando le viste partizionate distribuite vengono utilizzate su un server collegato che esegue SQL Server. È possibile che una tabella specificata appartenente alla vista partizionata non venga utilizzata effettivamente per una specifica esecuzione di una query sulla vista. Per tale motivo, il fatto di posticipare la convalida dello schema può contribuire a migliorare le prestazioni.