Applies ToSQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Service Pack 2 - duplicate (do not use)

Symptomen

Ga ervan uit dat u Microsoft SQL Server 2012 of SQL Server 2014 gebruikt. Wanneer u de maintainer voor externe BLOBOPSLAG (RBS) uitvoert, mislukt het hulpmiddel voor het bijhouden van de RESOURCESTRUCTUUR en wordt het volgende foutbericht weergegeven:

Taken voor Maintainers beginnen. Garbagecollection wordt gestart. Naslag scan starten. Naslag scan is voltooid voor deze database. Gescande 113 blob's. De blob's van 0 in het bereik van 0x000000000000000000000000 (exclusief) zijn verwijderd naar 0x00000000000000b600000002 (inclusief). Deze taak is beëindigd. Totale hoeveelheid werkeenheden verwerkt. de werkeenheden 0 zijn onvolledig. Doorgeven van verwijdering wordt gestart. Op dit moment is er geen werk beschikbaar. Andere klanten, processen of threads werken mogelijk op dit moment aan andere taken. De huidige hoeveelheid werk wordt overgeslagen vanwege een fout. Zie voor meer informatie het logboek met bijgehouden gegevens voor de RBS. [..] Deze taak is beëindigd. Totale hoeveelheid werkeenheden van 102 verwerkt. 101 werkeenheden zijn onvolledig. Nodig om 0 blob's te verwijderen. Verwijderen van 0 blob's is gelukt 0 blob's niet gevonden in de BLOB Store. Deze taak is beëindigd. Deze taak is beëindigd.

Wanneer u Profiler gebruikt om het probleem te traceren, wordt het volgende foutbericht weergegeven:

Msg 50000, niveau 16, State 0, procedure rbs_sp_rethrow_error, 38RBSs fout voor de regel. Oorspronkelijke fout: Number 535, sever 16, State 0, procedure rbs_sp_count, regel 52, bericht: de functie DateDiff resulteerde in een overloop. Het aantal datum opgetelden dat twee datum/tijd-exemplaren opscheidt, is te groot. Probeer DateDiff te gebruiken met een minder nauwkeurige DatePart.

Oorzaak

Dit probleem doet zich voor omdat een query waarmee de tijd wordt gecontroleerd sinds de laatste uitvoering kan overlopen wanneer de laatste uitvoering kan overlopen wanneer de laatste uitvoering wordt geconverteerd naar milliseconden. Daardoor mislukt de query en wordt de taak beëindigd zonder de gegevens te verwerken.

Oplossing

De oplossing voor dit probleem is beschikbaar in het nieuwste Feature Pack downloaden voor RBS. msi. Als u al beschikt over een bestaande installatie van een RESOURCESTRUCTUUR, is het raadzaam om het script uit te voeren dat is opgenomen in de sectie tijdelijke oplossing om het probleem tijdelijk op te lossen.

Download het Microsoft SQL server 2014 Service Pack 2 (SP2) Feature Pack Download het Microsoft SQL Server 2012 Service Pack 4 (SP4) Feature Pack

Workaround

Als u een bestaande installatie van RBS hebt op SQL Server 2012 of SQL Server 2014 waarbij de fix niet is geïnstalleerd, kunt u de volgende tijdelijke oplossingsstappen gebruiken:

  1. Open in SSMS het script uit stap 3 en maak vervolgens verbinding met de SQL Server-instantie waarin de RBS-client database wordt gehost waarop u de oplossing wilt toepassen.

  2. Vervang in het script de tekenreeks ' your_RBS_client_database ' door de feitelijke naam van de RBS client-database.

  3. Voer het script uit om de correctie toe te passen.use [your_RBS_client_database]go if object_id(N'mssqlrbs_resources.rbs_sp_count') is not null drop procedure mssqlrbs_resources.rbs_sp_countgo create 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)asbegin declare @type tinyint, @secondsUsed bit, @seconds float declare @maxDays int = 10; if not exists ( select * from mssqlrbs_resources.rbs_internal_counters where operation = @operation and object = @object and description = @description ) raiserror (N'Internal error in RBS. Attempt to count invalid performance counter. Counter: <%d>.<%d>.<%s>.', 16, 101, @operation, @object, @description) select @type = type, @secondsUsed = seconds_used from mssqlrbs_resources.rbs_internal_counters where operation = @operation and object = @object and description = @description if @object != 0 begin if @value is null raiserror (N'Internal error in RBS. Value not specified for performance counter <%d>.<%d>.<%s>.', 16, 103, @operation, @object, @description) end if @secondsUsed = 1 begin if (@start_time is null) raiserror (N'Internal error in RBS. Start time not specified for performance counter <%d>.<%d>.<%s>.', 16, 102, @operation, @object, @description) set @end_time = isnull(@end_time, getutcdate()) if (@start_time > @end_time) raiserror (N'Internal error in RBS. Start time is after end time. Counter: <%d>.<%d>.<%s>.', 16, 104, @operation, @object, @description) if (datediff(day, @start_time, @end_time) >= @maxDays) begin set @seconds = convert(float, datediff(second, @start_time, @end_time)) end else begin set @seconds = convert(float, datediff(millisecond, @start_time, @end_time)) / 1000 end end update mssqlrbs_resources.rbs_internal_counters set count = count + 1, value = value + @value, squared_value = squared_value + square(@value), min_value = case when min_value is null then @value when (@value < min_value) then @value else min_value end, max_value = case when max_value is null then @value when (@value > max_value) then @value else max_value end, last_value = @value, seconds = seconds + @seconds, squared_seconds = squared_seconds + square(@seconds), min_seconds = case when min_seconds is null then @seconds when (@seconds < min_seconds) then @seconds else min_seconds end, max_seconds = case when max_seconds is null then @seconds when (@seconds > max_seconds) then @seconds else max_seconds end, last_seconds = @seconds, last_update_time = getutcdate(), last_message = @message where operation = @operation and object = @object and description = @description endgo

Status

Microsoft heeft bevestigd dat dit probleem zich kan voordoen in de Microsoft-producten die worden vermeld in de sectie Van toepassing op.

Meer hulp nodig?

Meer opties?

Verken abonnementsvoordelen, blader door trainingscursussen, leer hoe u uw apparaat kunt beveiligen en meer.

Community's helpen u vragen te stellen en te beantwoorden, feedback te geven en te leren van experts met uitgebreide kennis.