Příznaky

Jde o takovouto situaci:

  • Propojený server je nakonfigurován mezi místním serveru a vzdáleného serveru, že obě instance serveru Microsoft SQL Server 2012.

  • Místní server je nakonfigurován pomocí jednoho řazení, jako jsou malá a velká písmena řazení.

  • Na vzdáleném serveru je objekt, který je konfigurován v různé řazení z místního serveru, jako jsou malá a velká písmena řazení.

  • Připojení z Microsoft JDBC ovladače SQL Server ovladač Microsoft ODBC pro SQL Server, zprostředkovatele SQL OLE DB nebo nativního klienta SQL na místní server.

  • Ovladač provede dotaz Transact-SQL aktualizace jako připravený příkaz, který volá sp_prepexec uložené procedury na místním serveru.

  • Dotaz aktualizuje tabulku na vzdáleném serveru. Jedná se o sloupce objektu, který používá různé řazení z místního serveru.

V tomto scénáři může dojít pomalý výkon zpracování dotazu. Můžete zkontrolovat plán spuštění aktualizačního dotazu, se může zobrazit, že je vzdálené kontroly provedeny v tabulce na vzdáleném serveru bez filtrování. Proto dotaz může provést mnoho čtení, když skenuje vzdálené tabulky a potom načte všechny řádky na místní server.

Například dotaz je připraven na místním serveru, který má výchozí řazení malá a velká písmena a na vzdáleném serveru je tabulka T1 , která obsahuje sloupce, které jsou malá a velká písmena. Update prohledá všechny řádky T1.
DECLARE @p1 INTEXEC sp_prepexec @p1 output, N'@P0 NVARCHAR(16), @P1 NVARCHAR(16)',
N'UPDATE RemoteServer.RemoteDatabase.dbo.T1 SET COL1=@P0 WHERE COL2=@P1',
N'a', N'a'
SELECT @p1

Příčina

K problému dochází, protože je připraven aktualizační dotaz prohledá vzdálené tabulky při řazení neodpovídá na obou serverech.

Každé nové kumulativní aktualizace pro SQL Server obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí kumulativní aktualizace. Rezervovat nejnovější kumulativní aktualizace pro SQL Server:


Informace o opravě hotfixSpolečnost Microsoft má k dispozici podporovanou opravu hotfix. Tato oprava hotfix je však určena pouze problému popsanému v tomto článku. Použití této opravy hotfix pouze u systémů, ve kterých dochází k tomuto konkrétnímu problému.

Pokud je oprava hotfix k dispozici ke stažení, je v horní části tohoto článku znalostní báze Knowledge Base oddíl "Oprava Hotfix je dostupná ke stažení" . Pokud tento oddíl není uveden, odešlete požadavek na Microsoft Zákaznický servis a podporu k získání opravy hotfix.

Poznámka: Pokud nastanou další problémy nebo bude nutné další řešení potíží, bude možná třeba vytvořit další samostatný požadavek na služby. Běžná cena za technickou podporu se vztahuje k dodatečným otázkám podpory a k problémům, které se netýkají této konkrétní opravy hotfix. Úplný seznam telefonních čísel služeb zákazníkům společnosti Microsoft a podpoře nebo vytvořit zvláštní požadavek na službu navštivte následující web společnosti Microsoft:

http://support.microsoft.com/contactus/?ws=supportPoznámka: Ve formuláři „Oprava hotfix je dostupná ke stažení“ se zobrazují jazyky, pro které je oprava hotfix k dispozici. Pokud váš jazyk není zobrazen, to je protože oprava hotfix není k dispozici pro daný jazyk.

PředpokladyChcete-li nainstalovat tuto opravu hotfix, musíte mít nainstalován SQL Server 2012.

Informace o registrechNemáte změna registru po použití této opravy hotfix.

Informace o nahrazení opravy hotfixTato oprava hotfix nenahrazuje žádné další opravy hotfix.


Stav

Společnost Microsoft potvrdila, že se jedná o problém v produktech společnosti Microsoft, které jsou uvedeny v části "Platí pro".

Jak potíže obejít

Chcete-li pracovat abound problém, použijte jednu z následujících metod:

  • Nepoužívejte připravených příkazů ve zdrojovém kódu aplikace klienta. Můžete ad hoc příkazy nebo příkazy callable například uložené procedury namísto Pokud ovladač podporuje tato rozhraní.

  • Na obou serverech použijte odpovídající řazení.

Další informace

Chcete-li povolit příznak trasování, přidat spouštěcí parametr -T4199 nebo DBCC TRACEON(4199,-1) před zkompilován připravený příkaz povolit chování.

Chcete-li povolit příznak trasování můžete použít jednu z následujících metod:

  • Před spuštěním serveru SQL Server, použít Microsoft SQL Server Správce konfigurace, klepněte pravým tlačítkem myši příslušné instance a přidat spouštěcí parametr -T4199 tak, aby v budoucnu zůstává různé restartuje a všechna připojení k instanci.

  • Dynamicky povolit nastavení za běhu, jakmile získá služba spuštěna a globálně pro všechna připojení "(-1)." Ujistěte se, že bez mezipaměti postup, pokud máte v úmyslu provést zkoušení s přepínačem zapnuto nebo vypnuto.

    Chcete-li povolit nastavení použít následující globálně a dynamicky:
    DBCC TRACEON(4199,-1)DBCC TRACESTATUS(-1)
    DBCC FREEPROCCACHE
    Můžete použít následující nastavení zakázat globálně a dynamicky:
    DBCC TRACEOFF(4199,-1)DBCC TRACESTATUS(-1)
    DBCC FREEPROCCACHE


Potřebujete další pomoc?

Rozšiřte své znalosti a dovednosti
Projít školení
Získejte nové funkce jako první
Připojit se k programu Microsoft Insider

Byly tyto informace užitečné?

Jak jste spokojeni s kvalitou jazyka?
Co ovlivnilo váš názor?

Děkujeme vám za zpětnou vazbu.

×