Logga in med Microsoft
Logga in eller skapa ett konto.
Hej,
Välj ett annat konto.
Du har flera konton
Välj det konto som du vill logga in med.

Symptom

Föreställ dig följande:

  • En länkad server konfigureras mellan en lokal server och en fjärransluten server som båda har instanser av Microsoft SQL Server 2012.

  • Den lokala servern är konfigurerad med en sortering som skiftlägesokänslig.

  • Fjärrservern har ett objekt som har konfigurerats i en annan sortering från den lokala servern, till exempel skiftlägeskänslig sortering.

  • En anslutning görs från Microsoft JDBC driver för SQL Server, Microsoft ODBC-drivrutinen för SQL Server, SQL OLE DB-provider eller SQL Native Client till den lokala servern.

  • Drivrutinen utför en uppdatering Transact-SQL-fråga som ett förberett uttryck som anropar sp_prepexec lagrad procedur på den lokala servern.

  • Frågan uppdaterar en tabell på fjärrservern. Detta inkluderar ett kolumn-objekt som använder en annan sortering från den lokala servern.

I det här scenariot kan det uppstå långsamma prestanda i frågan. Om du markerar Körningsplan för uppdateringsfrågan syns en fjärrsökning utförs på tabellen i den fjärranslutna servern utan filtrering. Frågan kan därför utföra många läsningar när den söker igenom tabellen remote och hämtar alla rader till den lokala servern.

Till exempel frågan är beredd på den lokala servern som har skiftlägesokänslig Standardsortering och fjärrservern har en tabell T1 som innehåller en kolumn som är skiftlägeskänsliga. Uppdateringen söks alla rader i 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

Orsak

Problemet uppstår eftersom förberedda uppdateringsfråga genomsöker tabellen remote när sorteringen inte matchar på båda servrarna.

Varje ny kumulativ uppdatering för SQL Server innehåller alla snabbkorrigeringar och alla säkerhetskorrigeringar som ingick i den tidigare kumulativa uppdateringen. Checka ut de senaste kumulativa uppdateringarna för SQL Server:


Information om snabbkorrigeringenEn snabbkorrigering är tillgänglig från Microsoft. Den här snabbkorrigeringen är emellertid avsedd att åtgärda det problem som beskrivs i denna artikel. Använd bara den här snabbkorrigeringen för system med just detta problem.

Om snabbkorrigeringen är tillgänglig för hämtning finns ett avsnitt för "Snabbkorrigeringen är tillgänglig" överst i den här Knowledge Base-artikeln. Om det här avsnittet inte visas, skicka en begäran till Microsofts kundtjänst och Support för att få snabbkorrigeringen.

Obs! Om det uppstår ytterligare problem eller krävs felsökning, kan du behöva skapa en serviceförfrågan. De vanliga supportkostnaderna gäller för övriga supportfrågor och problem som inte uppfyller kraven för den här snabbkorrigeringen. En fullständig lista över telefonnummer för Microsofts kundtjänst och Support eller skapa en serviceförfrågan finns på följande Microsoft-webbplats:

http://support.microsoft.com/contactus/?ws=supportObs! "Snabbkorrigeringen tillgänglig"-formuläret visar de språk som snabbkorrigeringen är tillgänglig. Om ditt språk inte visas beror det på att ingen snabbkorrigering är tillgänglig för språket.

FörutsättningarOm du vill installera den här snabbkorrigeringen måste du ha SQL Server 2012 installerat.

RegisterinformationDu behöver inte ändra registret när du har installerat den här snabbkorrigeringen.

Ersättningsinformation för HotfixDen här snabbkorrigeringen ersätter inte några andra snabbkorrigeringar.


Status

Microsoft har bekräftat att detta är ett problem i Microsoft-produkterna som nämns i avsnittet "Gäller".

Temporär lösning

Att arbeta fler problemet, använder du någon av följande metoder:

  • Använd inte de förberedda rapporterna i klient-programmets källkod. Du kan använda ad hoc-rapporter eller callable uttryck som lagrade procedurer i stället om drivrutinen som stöder dessa gränssnitt.

  • Använd matchande sortering på båda servrarna.

Mer Information

Om du vill aktivera spårning flaggan, lägger du till startparamentern -T4199 eller DBCC TRACEON(4199,-1) innan förberedda uttrycket är kompilerad för att aktivera funktionen.

Du kan använda någon av följande metoder för att aktivera spårningsflagga:

  • Innan du startar SQL Server, Microsoft SQL Server Konfigurationshanteraren, högerklicka på den aktuella instansen och lägger till startparamentern -T4199 så att det kvarstår mellan omstarter och mellan alla anslutningar till instansen i framtiden.

  • Dynamiskt aktivera inställningen vid körning när tjänsten har kommit igång och globalt för alla anslutningar "(-1)." Glöm inte att frigöra procedur cache om du planerar att göra tester med växeln aktiverat eller inaktiverat.

    Använda följande för att aktivera inställningen globalt och dynamiskt:
    DBCC TRACEON(4199,-1)DBCC TRACESTATUS(-1)
    DBCC FREEPROCCACHE
    Använda följande för att inaktivera inställningen globalt och dynamiskt:
    DBCC TRACEOFF(4199,-1)DBCC TRACESTATUS(-1)
    DBCC FREEPROCCACHE


Behöver du mer hjälp?

Vill du ha fler alternativ?

Utforska prenumerationsförmåner, bläddra bland utbildningskurser, lär dig hur du skyddar din enhet med mera.

Communities hjälper dig att ställa och svara på frågor, ge feedback och få råd från experter med rika kunskaper.

Hade du nytta av den här informationen?

Hur nöjd är du med språkkvaliteten?
Vad påverkade din upplevelse?
Genom att trycka på skicka, kommer din feedback att användas för att förbättra Microsofts produkter och tjänster. IT-administratören kan samla in denna data. Sekretesspolicy.

Tack för din feedback!

×