Condividi tramite


Impostare le regole di confronto dei database definiti dall'utente in modo che corrispondano master ai database e model

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 e model .

  • 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 )