Požymiai
Tarkime, kad naudojate "Microsoft „SQL Server“ 2012" arba „SQL Server“ 2014. Kai vykdote nuotolinio didelių dvejetainių objektų saugojimo (RBS) priežiūros priemonę, RBS priežiūros įrankis neveikia ir gaunate šį klaidos pranešimą:
Pastaba
Prižiūrėtojo užduočių pradžia.
Šiukšlių surinkimo pradžia.
Paleidžiamas nuorodų nuskaitymas.
Šios duomenų bazės nuorodų nuskaitymas baigtas.
Nuskenuota 113 blobs. Panaikinta 0 dvejetainių objektų nuo 0x000000000000000000000000(išimtinai) iki 0x00000000000000b600000002(imtinai).
Ši užduotis baigta. Iš viso apdorota 1 darbo vienetai. 0 Darbo vienetai buvo neišsamūs.
Pradedamas naikinimo platinimas.
Šiuo metu nėra darbo.
Kiti klientai, procesai ar gijos šiuo metu gali atlikti kitas užduotis.
Praleidžiamas dabartinis darbo vienetas dėl klaidos. Daugiau informacijos ieškokite RBS prižiūrėtojo žurnale.
[..]
Ši užduotis baigta. Iš viso apdorota 102 darbo vienetai. 101 Darbo vienetai buvo neužbaigti. Reikia panaikinti 0 dvejetainių objektų. Pavyko ištrinti 0 dvejetainių objektų, dvejetainių objektų parduotuvėje nerasta 0 dvejetainių objektų.
Ši užduotis baigta.
Ši užduotis baigta.
Kai naudojate "Profiler" problemai sekti, gaunate tokį klaidos pranešimą:
Pastaba
MSG 50000, 16 lygis, 0 būsena, rbs_sp_rethrow_error procedūra, 38 eilutė
RBS klaida. Pradinė klaida: skaičius 535, sunkumas 16, būsena 0, procedūra rbs_sp_count, 52 eilutė,
Pranešimas: Dėl funkcijos datediff atsirado perpilda. Datos dalių, skiriančių du datos / laiko egzempliorius, skaičius yra per didelis. Pabandykite naudoti datediff su ne tokia tikslia datepart.
Priežastis
Ši problema kyla todėl, kad užklausa, kuri tikrina laiką nuo paskutinio vykdymo, gali būti perpildyta, kai konvertuoja reikšmę į milisekundes. Dėl to užklausa nepavyksta ir užduotis baigiama neapdorojant duomenų.
Sprendimas
Šios problemos sprendimas pasiekiamas naujausiame funkcijų pakete, skirtame RBS.msi. Jei jau turite esamą RBS įdiegtį, rekomenduojame paleisti scenarijų, pateiktą skyriuje "Sprendimo būdas", kad laikinai išspręstumėte problemą.
Atsisiųskite "Microsoft „SQL Server“ 2014 Service Pack 2" (SP2) funkcijų paketą
Atsisiųskite "Microsoft „SQL Server“ 2012" 4 pakeitimų paketo (SP4) funkcijų paketą
Sprendimo būdas
Jei turite RBS įdiegtą "„SQL Server“ 2012" arba "„SQL Server“ 2014", kurioje pataisa neįdiegta, galite atlikti šiuos sprendimo būdus:
SSMS atidarykite scenarijų iš 3 veiksmo ir prisijunkite prie „SQL Server“ egzemplioriaus, kuriame yra RBS kliento duomenų bazė, kuriai norite taikyti pataisą.
Scenarijuje pakeiskite eilutę "your_RBS_client_database" faktiniu RBS kliento duomenų bazės pavadinimu.
Paleiskite scenarijų, kad pritaikytumėte pataisą.
Naudokite [your_RBS_client_database]
grįžtiif object_id(N'mssqlrbs_resources.rbs_sp_count') is not null
Drop Procedure mssqlrbs_resources.rbs_sp_count
grįžticreate procedure mssqlrbs_resources.rbs_sp_count (
@operation smallint,
@object smallint = 0,
@value bigint = null,
@start_time datetime = null,
@end_time datetime = null,
@description sysname = N'',
@message nvarchar(max) = null
)
kaip
pradėtideklaruoti @type tinyint,
@secondsUsed bitas,
@seconds plūduriuojantisdeklaruoti @maxDays int = 10;
jei nėra (
Pasirinkti * iš mssqlrbs_resources.rbs_internal_counters
where operation = @operation and object = @object and description = @description
)
raiserror (N'Vidinė klaida RBS. Bandykite suskaičiuoti neleistiną efektyvumo skaitiklį. Skaitiklis: <%d>.<%d>.<%s>.',
16, 101, @operation, @object, @description)pasirinkti
@type = tipas,
@secondsUsed = seconds_used
nuo
mssqlrbs_resources.rbs_internal_counters
kur:
operacija = @operation ir
objektas = @object and
description = @descriptionjei @object != 0
pradėti
if @value is null
raiserror (N'Vidinė klaida RBS. Nenurodyta efektyvumo skaitiklio <%d> reikšmė.<%d>.<%s>.',
16, 103, @operation, @object, @description)
pabaigajei @secondsUsed = 1
pradėti
Jei (@start_time is null)
raiserror (N'Vidinė klaida RBS. Veikimo skaitiklio <%d> pradžios laikas nenurodytas.<%d>.<%s>.',
16, 102, @operation, @object, @description)set @end\_time = isnull(@end_time, getutcdate())
jei (@start_time >@end\_time)
raiserror (N'Vidinė klaida RBS. Pradžios laikas yra po pabaigos laiko. Skaitiklis: <%d>.<%d>.<%s>.',
16, 104, @operation, @object, @description)if (datediff(day, @start\_time@end\_time)>, =@maxDays)
pradėti
@seconds set = convert(float, datediff(second, @start\_time,@end\_time))
pabaiga
kitu atveju
pradėti
SET @seconds = CONVERT(float, DateDiff(millisecond, @start\_time, @end\_time)) / 1000
pabaiga
pabaigaatnaujinti mssqlrbs_resources.rbs_internal_counters
nustatyti
count = count + 1,
value = value + @value,
squared_value = squared_value + kvadratas(@value),
min_value = case
Kai min_value yra Null, tada @value
kai (@value < min_value) tada @value
kitu atveju min_value
pabaiga,
max_value = case
Kai max_value yra neapibrėžta @value
kai (@value > max_value) tada @value
kitu atveju max_value
pabaiga,
last_value = @value,
sekundės = sekundės + , @seconds
squared_seconds = squared_seconds + kvadratas(@seconds),
min_seconds = case
Kai min_seconds yra Null, tada @seconds
kai (@seconds < min_seconds) tada @seconds
kitu atveju min_seconds
pabaiga,
max_seconds = case
Kai max_seconds yra neapibrėžta reikšmė, tada @seconds
kai (@seconds > max_seconds) tada @seconds
kitu atveju max_seconds
pabaiga,
last_seconds = @seconds,
last_update_time = getutcdate(),
last_message = @message
kur:
operacija = @operation ir
objektas = @object and
description = @descriptionpabaiga
grįžti
Būsena
„„Microsoft““ patvirtino, kad tai yra „„Microsoft““ produktų, išvardytų dalyje „Taikoma“, problema.