BUG #: 190237 (turinio priežiūra) VSTS: 1427743

Požymiai

Įsivaizduokite tokią situaciją:

  • Susijęs serverio sukonfigūruotas tarp vietinio serverio ir nuotolinio serverio, kad abu yra Microsoft SQL Server 2012 egzempliorius.

  • Vietinis serveris sukonfigūruotas naudojant vieną sulyginimą, pavyzdžiui, utf8 analize.

  • Nuotolinis serveris yra objektas, kuris yra sukonfigūruotas naudojant skirtingų surinkimą iš vietinio serverio, pvz., didžiųjų ir mažųjų raidžių sulyginimą.

  • Ryšys yra pagamintas iš Microsoft JDBC tvarkyklę SQL Server, Microsoft ODBC tvarkyklė SQL Server, SQL OLE DB teikėjas ar SQL kalbos kliento vietinio serverio.

  • Tvarkyklės vykdo Transact-SQL naujinimo užklausą kaip paruošti pareiškimas, kad vietinis serveris reikalauja sp_prepexec saugomą procedūrą.

  • Užklausos atnaujina nuotolinio serverio lentelė. Tai apima duomenų stulpelio objektas, naudoja skirtingas surinkimą iš vietinio serverio.

Tokiu atveju gali kilti lėčiau užklausos vykdymas. Jei jums patikrinti vykdymo plano, naujinimo užklausą, galite matyti kad nuotolinio nuskaitymo atliekamas nuotolinio serverio lentelę be filtravimo. Todėl, užklausa gali atlikti daug rašoma, kai jis nuskaito nuotolinė lentelė ir tada nuskaito visas eilutes į vietos serverį.

Pvz., užklausos ruošiamas vietiniame serveryje, kuriame yra numatytasis utf8 analize ir Nuotolinis serveris yra lentelė T1 , kuriame yra stulpelį, kuriame yra Didžiosios ir mažosios raidės. Naujinimas bus nuskaityti visas eilutes, 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

Priežastis

Ši problema iškyla dėl to, kad paruošti naujinimo užklausą bus nuskaityti nuotolinė lentelė kai sulyginimą neatitinka tiek serveriuose.

Sprendimas

Po to, kai pritaikote šias karštąsias pataisas, turite įjungti sekimo žymė 4199 vietos serveryje, kuris yra susijęs serverio. Kaip įjungti į traceflag, skaitykite skyriuje "daugiau informacijos".

Pastaba. Šias karštąsias pataisas taikomas tik vietinis serveris, kuriame saugomi susijęs serverio ir optimizuoja parengtas ataskaitas. Šią karštąją pataisą nėra taikomas Nuotolinis serveris.

Problema pirmą kartą buvo išspręsta šį kaupiamąjį naujinimą SQL serverio.

Kaupiamasis naujinimas, 6 SQL Server 2012 SP1/en-us/help/2874879

SQL serverio kiekvieną naują Kaupiamasis naujinimas yra visos karštosios ir naujausios saugos pataisos, kurios buvo įtrauktos į ankstesnio kaupiamojo naujinimo. Patikrinkite SQL Server kaupiamieji naujinimai:


Karštųjų pataisų informacija„Microsoft“ pateikia palaikomas karštąsias pataisas. Tačiau šios karštosios pataisos skirtos tik šiame straipsnyje aprašytai problemai spręsti. Jas taikykite tik sistemoms, kuriose kyla ši konkreti problema.

Jeigu karštąsias pataisas galima atsisiųsti, šio žinių bazės straipsnio viršuje yra skyrius „Galima atsisiųsti karštąsias pataisas“. Jei šio skyriaus nėra, pateikite užklausą „Microsoft“ klientų aptarnavimo ir palaikymo tarnybai, kad gautumėte karštąsias pataisas.

Pastaba. Jeigu kyla papildomų problemų arba jei reikia šalinti triktis, gali reikėti pateikti atskirą užklausą. Už papildomą pagalbą dėl problemų ir klausimų, nesusijusių su čia nurodytomis karštosiomis pataisomis, bus taikomi įprasti mokesčiai už pagalbos paslaugas. Sąrašą Microsoft klientų aptarnavimo ir palaikymo tarnybos telefonų numerių arba sukurti atskirą aptarnavimo užklausą, apsilankykite šioje "Microsoft" svetainėje:

http://support.microsoft.com/contactus/?ws=supportPastaba. Formoje „Galima atsisiųsti karštąsias pataisas“ nurodomos kalbos, kurioms skirtos karštosios pataisos. Jei nematote savo kalbos, tai kalbai skirtų karštųjų pataisų nėra.

Būtinosios sąlygosNorint taikyti šias karštąsias pataisas, turite įdiegti SQL Server 2012.

Registro informacijaJums nereikia keisti registro pritaikius šią karštąją pataisą.

Karštųjų pataisų pakeitimo informacijaŠios karštosios pataisos nepakeičia jokių kitų karštųjų pataisų.


Karštąsias pataisas leidžia SQL serverio optimizavimo leisti vykdymo planas tai nuotolinio filtravimas, kai kur sąlyga gerai prie nuotolinio serverio būtų gauta iš nuotolinio lentelės eilutes.

Būsena

„Microsoft“ patvirtino, kad tai yra „Microsoft“ produktų, išvardytų skyriuje „Taikoma“, problema.

Sprendimas

Dirbti gausu problemą, naudokite vieną iš toliau nurodytų būdų:

  • Nenaudokite parengtas ataskaitas kliento šaltinio kodas. Jūs galite naudoti ad hoc ataskaitas arba pareikštines teiginiai kaip saugomas procedūras o jeigu tvarkyklė palaiko tos sąsajos.

  • Naudoti atitikimo sulyginimo tiek serveriuose.

Daugiau informacijos

Norėdami įgalinti sekimo žymė, pridėti paleisties parametras -T4199 arba DBCC TRACEON(4199,-1) prieš parengtas pareiškimas yra sudarytas norite, kad būtų toliau.

Įgalinti sekimo žymę, galite naudoti vieną iš toliau nurodytų būdų:

  • Prieš pradėdami SQL serverio, naudokite Microsoft SQL Server konfigūracijos tvarkyklė, dešiniuoju pelės mygtuku spustelėkite reikalingą egzempliorių ir pridėti paleisties parametras -T4199 , kad ji kartojasi iš naujo ir visus ryšius egzempliorių ateityje.

  • Dinamiškai įgalinti pasireiškia pradėjus paslaugos vykdymo metu, ir visame pasaulyje dėl visų ryšių "(-1)." Būtinai nemokamai procedūrą talpyklos, jei planuojate testuoti jungiklis įjungtas arba išjungtas.

    Naudoti šiuos nustatymą visame pasaulyje ir dinamiškai:
    DBCC TRACEON(4199,-1)DBCC TRACESTATUS(-1)
    DBCC FREEPROCCACHE
    Naudoti šiuos išjungti nustatymą visame pasaulyje ir dinamiškai:
    DBCC TRACEOFF(4199,-1)DBCC TRACESTATUS(-1)
    DBCC FREEPROCCACHE


Autorius: jannaw; jasonh
Rašytojas: v-shysun
Techninis redaktorius: jasonh; jayc; makohli; jannaw; sqlprev
Redaktorius: v-mordew

Reikia daugiau pagalbos?

Tobulinkite savo įgūdžius
Ieškoti mokymo
Pirmiausia gaukite naujų funkcijų
Prisijungti prie "Microsoft Insider"

Ar ši informacija buvo naudinga?

Ar esate patenkinti vertimo kokybe?
Kas turėjo įtakos jūsų patirčiai?

Dėkojame už jūsų atsiliepimus!

×