Condividi tramite


Requisiti relativi ai cursori gestiti da keyset per i provider OLE DB

I cursori Transact-SQL gestiti da keyset possono fare riferimento a tabelle remote solo se vengono soddisfatti i requisiti seguenti:

  • La query distribuita deve soddisfare i requisiti previsti per le istruzioni SELECT utilizzate in un'istruzione DECLARE CURSOR che dichiara il cursore gestito da keyset. Per ulteriori informazioni sui requisiti di Transact-SQL per il supporto di cursori gestiti da keyset, vedere DECLARE CURSOR (Transact-SQL).

  • Tutte le tabelle locali specificate nella query devono includere un indice univoco. L'indice della tabella remota deve essere esposto tramite il set di righe INDEXES dell'interfaccia IDBSchemaRowset.

Requisiti relativi all'indice per i provider OLE DB

Per la valutazione di determinate query, in SQL Server è possibile utilizzare gli indici delle tabelle di un provider OLE DB. Affinché SQL Server utilizzi un indice, il provider deve esporre interfacce OLE DB che consentano la scansione del set di righe dell'indice, la ricerca nel set di righe dell'indice mediante valori di colonne dell'indice e l'impostazione della posizione della riga nel set di righe della tabella di base mediante segnalibri ottenuti dal set di righe dell'indice.

L'utilizzo degli indici del provider OLE DB contribuisce a migliorare le prestazioni solo se i set di righe di tabelle e indici sono nello stesso computer dell'istanza di SQL Server. L'opzione Indici come percorso di accesso pertanto deve essere impostata solo se l'origine dei dati è nello stesso computer di SQL Server.

SQL Server può utilizzare gli indici di un provider OLE DB solo se vengono soddisfatti i requisiti seguenti:

  • Il provider deve supportare l'interfaccia IDBSchemaRowset con i set di righe di schema TABLES, COLUMNS e INDEXES.

  • Il provider deve supportare l'apertura di un set di righe di un indice mediante IOpenRowset specificando il nome dell'indice e il nome della tabella di base corrispondente.

  • L'oggetto indice deve supportare tutte le relative interfacce obbligatorie: IRowset, IRowsetIndex, IAccessor, IColumnsInfo, IRowsetInfo e IConvertTypes.

  • I set di righe aperti per la tabella di base indicizzata, tramite IOpenRowset, devono supportare l'interfaccia IRowsetLocate per il posizionamento in una riga della tabella di base in base a un segnalibro ottenuto dal set di righe dell'indice.

Se il provider OLE DB soddisfa questi requisiti, l'amministratore di SQL Server può impostare l'opzione Indici come percorso di accesso del provider in modo che in SQL Server vengano utilizzati gli indici del provider per la valutazione delle query. Per impostazione predefinita, SQL Server non cerca di utilizzare gli indici del provider se questa opzione non è impostata.

Requisiti per cursori keyset aggiornabili

È possibile aggiornare o eliminare una tabella remota mediante un cursore keyset definito in una query distribuita. Esempio: UPDATE | DELETE remote_table WHERE CURRENT OF cursor_name.

I cursori aggiornabili sono utilizzabili nelle query distribuite se vengono soddisfatti i requisiti seguenti:

  • Il provider deve rispettare le condizioni relative alle operazioni di aggiornamento ed eliminazione nella tabella remota. Per ulteriori informazioni, vedere Requisiti relativi alle istruzioni UPDATE e DELETE per i provider OLE DB.

  • Tutte le operazioni del cursore devono essere eseguite in transazioni utente esplicite, o transazioni con istruzioni multiple, con livello di isolamento Repeatable Read o Serializable.

Il provider deve supportare le transazioni distribuite mediante l'interfaccia ITransactionJoin.