KORRIGERA: Fel när du kör RBS Underhållaren i SQL Server 2012 eller SQL Server-2014

Symptom

Anta att du använder Microsoft SQL Server 2012 eller SQL Server-2014. När du kör Remote BLOB Storage (RBS) Underhållaren verktyget Underhållaren RBS misslyckas och följande felmeddelande:

Starta Underhållaren aktiviteter.
Starta skräpsamling.
Påbörjar sökning för referens.
Referens för sökningen är klar för den här databasen.
Skannade 113 BLOB. Ta bort 0 BLOB i intervallet 0x000000000000000000000000(exclusive) till 0x00000000000000b600000002(inclusive).
Den här aktiviteten har avslutats. Bearbetade 1 arbetsenheter totalt. 0 arbetsenheter var ofullständig.
Börja ta bort spridning.
Inget arbete är tillgängliga just nu.
Andra klienter, processer och trådar kan för närvarande arbetar med andra uppgifter.
Hoppa över den aktuella enheten för arbete på grund av ett fel. Mer information finns i loggen RBS Underhållaren.
[..]
Den här aktiviteten har avslutats. Bearbetade totalt 102 arbetsenheter. 101 arbetsenheter var ofullständig. Behövs för att ta bort 0 BLOB. Lyckades ta bort 0 BLOB hittades BLOB 0 inte i blob-lagring.
Den här aktiviteten har avslutats.
Den här aktiviteten har avslutats.


När du använder Profiler för att spåra problemet, visas följande felmeddelande:

Msg 50000, nivå 16, tillstånd 0, rbs_sp_rethrow_error förfarande, rad 38
RBS-fel. Ursprungliga fel: Nummer 535, allvarlighetsgrad 16, tillstånd 0 förfarande rbs_sp_count rad 52,
Meddelande: Funktionen datediff orsakade spill. Antalet dateparts som skiljer två datum/tid-instanser är för stor. Om du försök använda datediff med en mindre exakt DatumDel.

Orsak

Det här problemet beror på att en fråga som söker tid sedan den senaste körningen kan spill när den konverterar ett värde till millisekunder. Detta medför att frågan misslyckas och uppgiften ska avslutas utan att bearbeta data.

Lösning

Det här problemet finns i senaste funktionen pack nedladdning för RBS.msi. Vi rekommenderar att du kör skriptet som anges i avsnittet ”lösning” för att tillfälligt lösa problemet om du redan har en befintlig installation av RBS.

Hämta Microsoft SQL Server-2014 Service Pack 2 (SP2) Feature Pack

Hämta Microsoft SQL Server 2012 Service Pack 4 (SP4) Feature Pack

Temporär lösning

Om du har en befintlig installation av RBS på SQL Server 2012 eller SQL Server-2014 som inte har installerat korrigeringsfilen kan använda du följande lösning:

  1. Öppna skriptet från steg 3 i SSMS, och sedan ansluta till SQL Server-instansen som är värd för RBS klientdatabas som du vill installera snabbkorrigeringen för att.

  2. Ersätta strängen ”your_RBS_client_database” med det faktiska namnet på RBS klientdatabas i skriptet.

  3. Kör skript för att installera snabbkorrigeringen.

    use [your_RBS_client_database]
    go


    if object_id(N'mssqlrbs_resources.rbs_sp_count') is not null
    drop procedure mssqlrbs_resources.rbs_sp_count
    go


    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
    )
    as
    begin

    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

    end
    go

Status

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

Behöver du mer hjälp?

Utöka dina kunskaper
Utforska utbildning
Få nya funktioner först
Anslut till Microsoft Insiders

Hade du nytta av den här informationen?

Tack för din feedback!

Tack för din feedback! Det låter som att det kan vara bra att koppla dig till en av våra Office-supportrepresentanter.

×