Regole di confronto nelle query distribuite

SQL Server supporta più regole di confronto. Le regole di confronto possono essere diverse per ogni colonna e a ogni valore di tipo carattere è associata una proprietà delle regole di confronto. SQL Server interpreta la proprietà delle regole di confronto dei dati di tipo carattere derivati da un'origine dei dati remota e la considera di conseguenza.

SQL Server utilizza le regole di confronto dei dati remoti per il confronto e l'ordinamento di operazioni sui dati di tipo carattere, Unicode e non Unicode. Le informazioni sulle regole di confronto per i dati remoti di tipo carattere vengono determinate in modo diverso a seconda che l'origine dei dati corrisponda o meno a un'istanza di SQL Server:

  • Il provider OLE DB Microsoft SQL Server Native Client indica automaticamente le regole di confronto per ogni colonna restituita.

  • Per le tabelle remote non contenute in SQL Server ma con regole di confronto identiche a quelle supportate da SQL Server, l'amministratore può specificare le regole di confronto predefinite dell'origine dei dati OLE DB nell'ambito della definizione del server collegato. SQL Server può quindi utilizzare le regole predefinite per tutte le colonne restituite da tale server collegato.

Dopo che SQL Server ha determinato le regole di confronto di una colonna di caratteri remota, le stesse regole utilizzate in SQL Server per le colonne locali vengono seguite per la conversione, il confronto e le operazioni delle colonne di una tabella remota. Per ulteriori informazioni sulle regole che SQL Server applica alle regole di confronto e sui nomi delle regole di confronto supportati da SQL Server, vedere Utilizzo delle regole di confronto.

Se le regole di confronto del database remoto predefinito sono diverse da quelle del database locale corrente, le stringhe remote vengono considerate corrispondenti al formato Unicode. Per verificare che tali stringhe vengano considerate uniformemente in tutti i server remoti, eseguire le operazioni seguenti:

  • Utilizzare il formato Unicode N**'string'** per specificare valori letterali stringa nelle query distribuite.

  • Definire i server collegati che dispongono di un database di destinazione esplicito, anziché di un database remoto predefinito. Tale database potrebbe utilizzare regole di confronto diverse.

Definizione delle opzioni del server collegato

Le opzioni seguenti del server collegato, definite tramite sp_serveroption, controllano se SQL Server utilizza le regole di confronto dei server collegati e la modalità di utilizzo:

  • L'opzione use remote collation specifica se verranno utilizzate le regole di confronto di una colonna remota o di un server locale. Se l'opzione è impostata su true, per le origini dei dati di SQL Server vengono utilizzate le regole di confronto delle colonne remote, mentre per le origini dei dati diverse da quelle di SQL Server vengono utilizzate le regole di confronto specificate nell'opzione collation name. Se l'opzione è impostata su false, le query distribuite utilizzano sempre le regole di confronto predefinite dell'istanza del server locale, mentre l'opzione collation name e le regole di confronto delle colonne remote vengono ignorate.

  • L'opzione collation name specifica il nome delle regole di confronto utilizzate dall'origine dei dati remota se use remote collation è impostata su true e l'origine dei dati non è inclusa in SQL Server. È necessario che il nome corrisponda alle regole di confronto supportate da SQL Server. Utilizzare questa opzione per l'accesso a un'origine dei dati OLE DB diversa da SQL Server ma con regole di confronto corrispondenti a quelle di SQL Server. Le origini dei dati di SQL Server indicano le regole di confronto utilizzate per le colonne e l'opzione collation name viene ignorata per i server collegati che fanno riferimento alle origini di SQL Server.

    Nota

    L'unico modo per utilizzare le regole di confronto remote consiste nell'utilizzo delle opzioni del server collegato. Pertanto, le query costruite con nomi ad hoc forniti da OPENROWSET e OPENDATASOURCE non possono utilizzare le informazioni sulle regole di confronto dei dati remoti di tipo carattere. Inoltre, tutti i server collegati di SQL Server versione 7.0 aggiornati a SQL Server 2000 o a versioni successive vengono impostati su use remote collation=false.

Riepilogo delle impostazioni dell'opzione

Nella tabella seguente è disponibile un riepilogo delle modalità con cui SQL Server determina le regole di confronto utilizzate per ogni colonna quando l'opzione use remote collation è impostata su true o su on.

Tipo di server collegato

Opzione collation name non impostata

Opzione collation impostata (su CollX)

SQL Server

Regole di confronto effettive della colonna remota.

Regole di confronto effettive della colonna remota.

Altro

Regole di confronto predefinite dell'istanza locale di SQL Server.

CollX

Nella tabella seguente è disponibile un riepilogo delle modalità con cui SQL Server determina le regole di confronto utilizzate per ogni colonna quando l'opzione use remote collation è impostata su false o su off.

Tipo di server collegato

Opzione collation name non impostata

Opzione collation impostata (su CollX)

SQL Server

Regole di confronto predefinite dell'istanza locale di SQL Server.

Regole di confronto predefinite dell'istanza locale di SQL Server.

Altro

Regole di confronto predefinite dell'istanza locale di SQL Server.

Regole di confronto predefinite dell'istanza locale di SQL Server.