Condividi tramite


Impostazione delle regole di confronto dei database definiti dall'utente in modo che corrispondano a quelle dei database master e modello

Questa regola consente di controllare se i database definiti dall'utente vengono configurati utilizzando le stesse regole di confronto di quelle per i database master e modello.

Procedure consigliate

È consigliabile fare in modo che le regole di confronto dei database definiti dall'utente corrispondano a quelle dei database master e modello. In caso contrario, possono verificarsi conflitti relativi alle regole di confronto che potrebbero impedire l'esecuzione del codice. Quando, ad esempio, una stored procedure crea un join tra una tabella e una tabella temporanea, SQL Server potrebbe terminare il batch e restituire un errore di conflitto tra regole di confronto se le regole di confronto del database definito dall'utente differiscono da quelle del database modello. Questo problema si verifica perché le tabelle temporanee vengono create in tempdb, che basa le proprie regole di confronto su quelle del modello.

In caso di errori di conflitto tra regole di confronto, considerare una delle soluzioni seguenti:

  • Esportare i dati dal database utente e importarli nelle nuove tabelle che utilizzano le stesse regole di confronto dei database master e modello.

  • Ricostruire i database di sistema in modo che utilizzino regole di confronto corrispondenti a quelle del database utente. Per ulteriori informazioni su come ricostruire i database di sistema, vedere Ricostruzione di database di sistema.

  • Modificare qualsiasi stored procedure che crea join tra tabelle utente e tabelle in tempdb per creare le tabelle in tempdb utilizzando le regole di confronto del database utente. A tale scopo, aggiungere la clausola COLLATE database_default alle definizioni delle colonne della tabella temporanea, come illustrato nell'esempio seguente:

    CREATE TABLE #temp1 ( c1 int, c2 varchar(30) COLLATE database_default )