Domanda

Ehi, sto riscontrando un problema che sembra essere correlato alle regole di confronto, ma non sono sicuro.

Sto sviluppando un backup del mio database di produzione. L'unica differenza negli ambienti di SQL Server 2005 (di cui sono a conoscenza al momento) è che il mio localhost ha & Quot; SQL_Latin1_General_CP1_CS_AS & Quot; (Case sensitive) come fascicolazione e l'ambiente di produzione ha & Quot; SQL_Latin1_General_CP1_CI_AS & Quot; (senza distinzione tra maiuscole e minuscole).

Quando eseguo localmente le procedure memorizzate, vengono lanciate " Deve dichiarare la variabile scalare " @firstName " " errori.

La variabile " @FirstName " è stato dichiarato.

Ora, il database stesso è " SQL_Latin1_General_CP1_CI_AS " come le regole di confronto, quindi perché le procedure memorizzate non vengono eseguite in un contesto senza distinzione tra maiuscole e minuscole?

L'ho esaminato online e dicono sostanzialmente che devo ricostruire il mio SQL Server.

Il contesto del database non dovrebbe superare il contesto del server per le regole di confronto?

A proposito, il master e il tempdb sono entrambi " SQL_Latin1_General_CP1_CS_AS " Case Sensitive.

È stato utile?

Soluzione

Questa è una situazione MALE in cui trovarsi. Qualsiasi cosa in cui non controlli la collazione (ad esempio SELEZIONA IN una tabella temporanea) si romperà quando proverai a fare qualcosa che coinvolge varchars. Le regole di confronto predefinite del server trionferanno su qualsiasi cosa in cui non forzerai esplicitamente le regole di confronto, che sarà la maggior parte se non tutto il codice della procedura memorizzata esistente.

La normale soluzione a questo problema è reinstallare l'istanza di SQL Server con le regole di confronto corrette . Sì, lo fai davvero devi farlo. La mia conoscenza di questo è di seconda mano, ma capisco (da qualcuno che ha ottenuto il supporto tecnico MS coinvolto in questo problema) è che è tecnicamente possibile cambiare le regole di confronto predefinite su un'istanza di SQL Server, ma il processo è soggetto a errori tecnici e un errore può lasciare il server in uno stato inutilizzabile. Apparentemente questa procedura non è ufficialmente supportata da Microsoft e la procedura consigliata è reinstallare l'istanza di SQL Server.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top