Impostare o cambiare le regole di confronto del server

Si applica a: SQL Server e Istanza gestita di SQL di Azure

Le regole di confronto del server costituiscono le regole di confronto predefinite per tutti i database di sistema installati con l'istanza di SQL Server e per ogni database utente creato successivamente.

È consigliabile considerare attentamente le regole di confronto a livello di server, perché possono influire su quanto segue:

  • Regole di ordinamento e confronto in =, JOIN, ORDER BY e in altri operatori di confronto dei dati testuali.
  • Regole di confronto delle colonne CHAR, VARCHAR, NCHAR e NVARCHAR di viste di sistema, funzioni di sistema e oggetti in tempdb (ad esempio, tabelle temporanee).
  • Nomi di variabili, cursori ed etichette GOTO. Per esempio, le variabili @pi e @PI vengono considerate variabili diverse se le regole di confronto a livello di server fanno distinzione tra maiuscole e minuscole, ma vengono considerate la stessa variabile se le regole di confronto a livello di server non fanno questa distinzione.

Regole di confronto in SQL Server

Le regole di confronto del server vengono specificate durante l'installazione di SQL Server. Le regole di confronto predefinite a livello di server sono basate sulle impostazioni locali del sistema operativo.

Ad esempio, le regole di confronto predefinite per i sistemi che usano l'inglese degli Stati Uniti (en-US) sono SQL_Latin1_General_CP1_CI_AS. Per altre informazioni, incluso l'elenco delle impostazioni locali del sistema operativo per i mapping delle regole di confronto predefinite, vedere la sezione "Regole di confronto a livello di server" in Supporto Unicode e delle regole di confronto.

Nota

Le regole di confronto a livello di server per SQL Server Express LocalDB sono SQL_Latin1_General_CP1_CI_AS e non possono essere cambiate durante o dopo l'installazione.

Cambiare le regole di confronto in SQL Server

Cambiare le regole di confronto predefinite per un'istanza di SQL Server può essere un'operazione complessa e richiede i passaggi seguenti.

Nota

Invece di cambiare le regole di confronto predefinite di un'istanza di SQL Server, è possibile specificare regole di confronto predefinite per ogni nuovo database creato con la clausola COLLATE delle istruzioni CREATE DATABASE e ALTER DATABASE. Per altre informazioni, vedere Set or Change the Database Collation.

Per cambiare le regole di confronto, seguire questa procedura:

  • Assicurarsi che siano disponibili tutte le informazioni o gli script necessari per ricreare i database utente e tutti gli oggetti in essi contenuti.

  • Esportare tutti i dati usando uno strumento come l'utilità bcp. Per altre informazioni, vedere Importazione ed esportazione bulk di dati (SQL Server).

  • Eliminare tutti i database utente.

  • Ricompilare il database master specificando le nuove regole di confronto nella proprietà SQLCOLLATION del comando setup. Ad esempio:

    Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName
    /SQLSYSADMINACCOUNTS=accounts [ /SAPWD= StrongPassword ]
    /SQLCOLLATION=CollationName  
    

    Per altre informazioni, vedere Ricompilare database di sistema.

  • Creare tutti i database e tutti gli oggetti in essi contenuti.

  • Importare tutti i dati.

Impostazione delle regole di confronto del server in Istanza gestita di SQL di Azure

È possibile specificare regole di confronto a livello di server in Istanza gestita di database SQL di Azure durante la creazione dell'istanza, ma non è possibile cambiarle in seguito. È possibile impostare regole di confronto a livello di server tramite il portale di Azure o tramite PowerShell e il modello di Resource Manager durante la creazione dell'istanza. Le regole di confronto predefinite corrispondono a SQL_Latin1_General_CP1_CI_AS.

In caso di migrazione di database da SQL Server a Istanza gestita di SQL di Azure, controlla le regole di confronto del server nel database SQL Server di origine tramite la funzione SERVERPROPERTY(N'Collation') e crea un'Istanza gestita che corrisponde alle regole di confronto di SQL Server. La migrazione di un database da SQL Server a Istanza gestita di SQL con regole di confronto a livello di server non corrispondenti può causare diversi errori imprevisti nell'esecuzione di query. Non è possibile modificare le regole di confronto a livello di server nell'Istanza gestita esistente.

Regole di confronto nel database SQL di Azure

Non è possibile modificare o impostare le regole di confronto del server logico in database SQL di Azure, ma è possibile configurare quelle di ogni database sia per i dati sia per il catalogo. Le regole di confronto del catalogo determinano le regole di confronto per i metadati di sistema, ad esempio gli identificatori di oggetto. Entrambe le regole di confronto possono essere specificate in modo indipendente quando si crea il database nel portale di Azure, in T-SQL con CREATE DATABASE, in PowerShell con New-AzSqlDatabase.