PRB: CONCAT_NULL_YIELDS_NULL SET způsobuje uložené procedury překompilujte

Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.

294942
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Příznaky
Pokud obsahuje uložené procedury příkazu SET CONCAT_NULL_YIELDS_NULL a příkazu změní aktuální nastavení CONCAT_NULL_YIELDS_NULL, postup při každém provedeny zda recompiled. To může vést k problémům s výkonem.
Příčina
Recompilation je vyžadován, protože změna nastavení CONCAT_NULL_YIELDS_NULL změní výsledek a způsob interpretace příkazy. V SQL Server 7.0 a SQL Server 2000 CONCAT_NULL_YIELDS_NULL nastavit on ve výchozím nastavení jsou v souladu s normy ANSI.

Nastavení CONCAT_NULL_YIELDS_NULL OFF v databázi úroveň není přinést požadovaného výsledku protože ODBC a OLE DB tuto vlastnost nastavit na ON při připojení. (Protože to je bitu určen v paketu připojení, SQL Profiler nezobrazuje, je tato vlastnost nastavena.)
Jak potíže obejít
Nenastavujte CONCAT_NULL_YIELDS_NULL uvnitř z uložené procedury. Doporučeným řešením je použití funkce ISNULL Při zřetězení řetězců.

Například dotaz by měl být zapsána následující:
SELECT * FROM mytable WHERE name LIKE 'Xavier ' + ISNULL(@lastname,'') + '%'				
spíše než takto:
SELECT * FROM mytable WHERE name LIKE 'Xavier ' + @lastname + '%'				
Ačkoli není doporučeno alternativní řešení by vydat příkazu SET CONCAT_NULL_YIELDS_NULL před provedením uložené procedury.
Další informace
Tento článek adresy pouze jeden důvod, uložené procedury mohou být recompiled; Další informace získáte v článku číslo článku databáze Microsoft Knowledge Base:
243586INF: Odstraňování uložená procedura Recompilation

Warning: This article has been translated automatically

Vlastnosti

ID článku: 294942 - Poslední kontrola: 01/16/2015 22:13:15 - Revize: 3.2

  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • kbnosurvey kbarchive kbmt kbprb KB294942 KbMtcs
Váš názor