Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Impostare le regole di confronto dei database definiti dall'utente in modo che corrispondano
Si applica a: SQL Server
Questa regola controlla se i database definiti dall'utente vengono definiti usando regole di confronto del database uguali alle regole di confronto per master
o model
.
Raccomandazioni per le procedure consigliate
È consigliabile che le regole di confronto dei database definiti dall'utente corrispondano alle regole di confronto di master
o model
. In caso contrario, possono verificarsi conflitti relativi alle regole di confronto che potrebbero impedire l'esecuzione del codice. Ad esempio, quando una stored procedure unisce una tabella a una tabella temporanea, SQL Server potrebbe terminare il batch e restituire un errore di conflitto di regole di confronto se le regole di confronto del database definito dall'utente e del model
database sono diverse. Ciò si verifica perché le tabelle temporanee vengono create in tempdb
, che basa le relative regole di confronto su quella di model
.
In caso di errori di conflitto tra regole di confronto, considerare una delle soluzioni seguenti:
Esportare i dati dal database utente e importarli in nuove tabelle con le stesse regole di confronto dei
master
database emodel
.Ricompilare i database di sistema in modo che vengano utilizzate regole di confronto corrispondenti a quelle del database utente. Per altre informazioni su come ricompilare i database di sistema, vedere Ricompilare i database di sistema.
Modificare le stored procedure che aggiungono tabelle utente a tabelle in per creare le tabelle in
tempdb
tempdb
utilizzando le regole di confronto del database utente. A tale scopo, aggiungere la clausola COLLATE database_default alle definizioni di colonna della tabella temporanea, come illustrato nell'esempio seguente:CREATE TABLE #temp1 ( c1 int, c2 varchar(30) COLLATE database_default )