Tema: SQL Server (2005) default collation is Stored Procedure parametrai
Autorius: Meff
Data: 2009-07-14 12:48:24
Sveiki. 
SQL Server 2005.
Problema tokia, kad nors duombazių Collationai ir sutampa - pas klientus Stored Procedūros vis tiek vykdomos kitaip.

Situacija: mano serveris turi CS collationą. Stored procedūroje yra toks tekstas:
ALTER PROCEDURE dbo.procedura
( @ImportId int )
AS
SELECT * FROM ImportTable WHERE ImportID = @ImportId

tuo tarpu lentelėje laukas vadinasi ImportId.
Mano serveryje su CS nustatymu ši procedūra nesusikompiliuoja (alter procedure išmeta klaidą, kad nėra collumo). Lygiai taip pat yra ir pas klientą

Dabar kita situacija:

ALTER PROCEDURE dbo.procedura
( @ImportId int )
AS
SELECT * FROM ImportTable WHERE ImportId = @ImportID

mano serveryje susikompiliuoja, o pas klientą - ne. SQL Serveris rodo errorą kad neegzistuoja '@ImportID'

Čia yra CASE'ingo problema. Bet kodėl mano duombazės serveris sukompiliuoja procedūrą? Duombazių Collationai sutampa. Įtariu, kad taip vyksta dėl to, kad klientų serveryje DEFAULT COLLATION bus nustatytas CS, o maniškiame - CI. Bet nejaugi duombazės collationas neturėtų owerridinti serverio collationo? Ar Stored Procedūrų lygmenyje svarbiausias yra MASTER duombazės Collationas?

Man niekaip nepavyksta atkurti tokios pačios development aplinkos, kaip pas klientą, taigi negaliu ištaisyti CASE'ingo BUGų.

Iš anksto ačiū už info.